А как же работает наш любимый JS.
Всем доброго времени суток. Подскажите пожалуйста, ( а лучше поделитесь ссылкой) как JS обрабатывает код. Меня интересуют потоки обработки файла.
|
Либо может знаете как этот процесс называется?) и с ноовыми силами долбить гугл)
|
Цитата:
|
Возможно не корректно выразился, но к примеру когда происходит баблинг переменных. Сам процесс, с самого начала когда мы запустили браузер и попросили выполнить его JS файл, с чего начинается весь процесс.
|
melky,
имеется в виду, как интерпретатор код обрабатывает. |
сначала идет интерпретация JS в современных браузерах JS переводится в промежуточный байт код боле понятный для компьютера на основании полученного кода проводится его анализ и оптимазация ( спасибо браузерным войнам) затем код встраивается в глобальный скоп (это такой специальный объект в котором сохраняются именна=ссылки на переменные строятся хеш таблицы) после этого запускается компиляция в нативный код системы после этого код запускается на выполнение как нативный код текущей системы
|
Зависит от VM, т.к. реализаций JS много и они работают по разному, например Nashorn транслирует код в байт код JVM, а другие VM могут компилить код сразу в машинный, минуя байт код. Также может зависит от режима работы VM и т.д.
Примерная схема такова: 1) Парсинг исходного кода; 2) Генерация байт кода или непосредственная компиляция в машинный код; 3) В VM, которые используют JIT часто используемый байткод комплится в машинный. Вообще VM может поступать как посчитает нужным, т.к. это никаким стандартом не контролируется, поэтому может статься, что принципы работы у того же SpiderMonkey и V8 сильно отличаются, в общем нужно разбираться конкретно. |
Для тех кому интересно = ) ссылка на материал по моему вопросу. Думаю полезно знать каждому.
|
Цитата:
Только следует заметить, что в статье по ссылке описан стандарт ES3, а сейчас ES5.1 и готовится ES6, а там многое сделано иначе, но у Сошникова есть статьи и про актуальные стандарты. |
kobezzza,
да, блог один из наигоднейших, что я читал. |
Часовой пояс GMT +3, время: 21:38. |