2016-10-10 16 views
8

Próbuję lepiej zrozumieć, jak JavaScript jest wykonywany w środowisku przeglądarki internetowej.Czy kod JavaScript jest kompilowany do kodu komputera po uruchomieniu w środowisku przeglądarki internetowej?

Jeśli chodzi o Node.js, rozumiem, że kod JavaScript napisany w programie Node.JS jest skompilowany z kodem C++ (V8) i ostatecznie staje się kodem maszynowym. Ponieważ Node.js może wchodzić w interakcje z systemem plików i innymi zadaniami na poziomie komputera, dla mnie ma sens, aby ostatecznie stał się on kodem maszynowym.

Czuję inaczej w środowisku przeglądarki internetowej. Z mojego rozumienia, głównym celem jest interakcja z DOM. Czy JavaScript musi być wkompilowany w kod maszynowy, aby po prostu wchodzić w interakcje z DOM?

Jestem zdziwiony tym. Node.js i Chrome działają w wersji V8. V8 jest napisany w C++ i według mojej wiedzy, kompiluje kod JavaScript do kodu maszynowego, który może zrozumieć procesor.

Potrzebujesz silnika JavaScript do wdrożenia ECMA-262, to jest cały cel silnika (chyba?). Ale czy przeglądarka internetowa wymaga JavaScript do kompilacji na poziomie języka maszyny, jakie operacje wykonuje komputer?

Oto kilka artykułów mam zbadane, niestety, ja nie znalazłem odpowiedzi na moje pytanie w nich:

+0

Nie mam pełnej odpowiedzi na twoje pytanie, ale to zależy od przeglądarki, a jaki silnik js używa. Większość dużych graczy ma swoje własne, unikalne silniki lub przynajmniej własne widły istniejących silników. –

+1

Kto wie? Może tak jest, może nie jest. Współczesne środowisko wykonawcze JavaScript może rzeczywiście skompilować małe fragmenty kodu do natywnej postaci binarnej. Naprawdę nie ma mowy o tym, co program może powiedzieć. Dlaczego to ma znaczenie? – Pointy

+0

I tak, jak mówi Jaromanda X, całkowicie mylisz się, jak działa Node. – Pointy

Odpowiedz

2

Silnik jest napisany w C++, a następnie ten kod jest tłumaczony na kod maszynowy przez kompilator. Gdy kod znajduje się w języku maszynowym, może być uruchamiany przez komputer. Gdy silnik jest uruchomiony, może odczytać kod napisany w JavaScript, zinterpretować go i wykonać to, o co proszony jest kod. W tym przypadku to, co faktycznie działa na komputerze, to kod silnika, który właśnie robi to, co robi inny kod. Różnica między węzłem a przeglądarką polega na tym, że przeglądarka nie zrobi niczego, o co poprosi JavaScript. Inną rzeczą, o której należy pamiętać, jest to, że niektóre przeglądarki i węzły tłumaczą kod JavaScript na kod maszynowy w czasie rzeczywistym, aby uzyskać większą szybkość. Przeglądarki są również ostrożne, aby nie pisać kodu maszynowego, który jest niebezpieczny, ale teoretycznie mogłoby się to zdarzyć.

Powiązane problemy