2016-11-18 5 views
5

При проверке областей функции в консоли DevTools я заметил область «сценарий». После небольшого исследования, похоже, он создается для переменных let и const.Какова цель области действия сценария?

Области применения функции в скрипте без const или let переменных:

the global scope

Сфера функции в скрипте с let переменной:

a global scope and a script scope

Yet следующее печатает 1 в консоли - переменные в области сценария могут быть доступны из других сценариев ts:

<script>let v = 1</script> 
<script>console.log(v)</script> 

Я слышал о модулях ES6, в которых переменные верхнего уровня не будут доступны извне модуля. Это то, для чего используется область или имеет ли она какую-либо другую цель?

ответ

6

Когда вы объявляете переменную, используя var на верхнем уровне (т. Е. Не внутри функции), она автоматически становится глобальной переменной (поэтому в браузере вы можете получить к ней доступ как свойство window). Это отличается от переменных, объявленных с использованием let и const - они не становятся глобальными переменными. Вы можете получить к ним доступ в другом теге скрипта, но вы не можете получить к ним доступ как свойства window.

Смотрите этот пример:

<script> 
 
    var test1 = 42; 
 
    let test2 = 43; 
 
</script> 
 
<script> 
 
    console.log(test1); // 42 
 
    console.log(window.test1); // 42 
 
    console.log(test2); // 43 
 
    console.log(window.test2); // undefined 
 
</script>

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