2015-12-21 2 views
1

Я знаю Временную мертвую зону в es6. Но я был смущен процедурой следующего кода.es6 Временная мертвая зона

Javascript - это своего рода интерпретирующий язык. Как он знает, что в этом блоке будет указано s, а не использовать s вне этого блока.

Другим словом, какова процедура следующего кода? Я новичок здесь, пожалуйста, помогите мне.

'use strict' 
var s = 1; 
if (true){ 
    console.log(s); 
    console.log("AAA"); 
    let s = 2; 
} 
+0

Что означает «как это знать»? Вы имеете в виду, как реализации делают это под капотом? – Oriol

+0

Я имею в виду, как программа знает, что при запуске кода --console.log (s) будет объявлено s = 2. Вместо использования s = 1? Потому что он компилируется перед запуском ??? –

ответ

3

Javascript-код запускается в несколько проходов. Первый проход будет проходить и обрабатывать все объявления и присваивать их своим областям.

Вот как он «знает», что левая сторона ссылка на «s» будет объявлен через пусть за рамки того, что если {} блок, даже несмотря на то, не водрузили пусть не имеет на самом деле объявила его еще.

+0

Поблагодарите U. Это значит, что язык интерпретации также должен выполняться первым, прежде чем он запустится? –

+1

@ Wei.huan - Часть спецификаций на самом деле требует этих нескольких проходов. Без него язык не может работать должным образом. Например, было бы довольно сложно, если бы объявления функций или переменные подъемы выполнялись как spec'd без нескольких проходов. Честно говоря, на мой взгляд, традиционные различия между интерпретируемыми и скомпилированными языками в настоящее время становятся нечеткими. Это, безусловно, НЕ чисто «интерпретируется», как в определении * «идет по строкам, не зная, что следующая строка« * », потому что это определенно не просто так работает с ее областями и т. Д. –

+0

Также имейте в виду, что на данный момент существует несколько разных движков, работающих под управлением JS, и, из того, что я прочитал, некоторые из них даже заявляют, что компилируют право на машинный код внутри. –

Смежные вопросы