Всегда ли в контексте выполнения Javascript было два этапа (создание и выполнение)?
В JavaScript "Понимание странных частей" происхождение конкретного контекста выполнения было объяснено со ссылкой на два этапа:
- Фаза создания - объявления имеют приоритет и инициализируются с неопределенными значениями
- Фаза исполнения - где разрешены назначения
В этом ответе на связанный вопрос автор ссылается на переводчика, делающего два прохода над исходным кодом.
Всегда ли это было особенностью JS или это более недавнее явление, связанное с более современными движками JS, которые действуют как JIT-компиляторы?
1 ответ
Решение
В общем, все должно быть создано, прежде чем его можно будет использовать.
И да, это было поведение JavaScript с первой стандартной редакции.
Но нет, современные движки больше не являются интерпретаторами, которые "делают два прохода над исходным кодом", они используют парсер, который извлекает объявления и исполняемые команды за один проход.