Действительно ли окно global в Javascript?

Возьмите этот фрагмент Javascript в браузере:

<script>

console.log(window.someThing);
var x = 12;

function foo() {
   window.otherThing = x;
}

</script>

Внутри foo мы можем получить доступ к окну , мы все это знают, но почему именно?

  • Это какая-то особая глобальная переменная?
  • Или "корневая область видимости" (внутри тега script ) имеет ее как неявную локальную переменную и это просто "наследуется закрытием", как может быть любая другая локальная переменная (например, x выше)?

И как это согласуется с переменными, объявленными непосредственно внутри тега script , являющегося установить как свойства окна ? (Или это не так?)

<script>
var x = 12;
function() {
   console.log(window.x);
}
</script>
26
задан Bart van Heukelom 13 July 2011 в 13:32
поделиться

1 ответ

Окно - это базовая область действия всех объектов javascript, и оно автоматически «присоединяется» к каждой определяемой вами переменной, если только вы не используете «var» перед объявлением, в этом случае область действия переменной является локальной (это означает, что она содержится внутри родительской функции или также является глобальным, если вы объявляете свою переменную вне функционального блока). Кроме того, окно определено как константа , то есть вы не можете переопределить объект окна (вы получите сообщение об ошибке «ошибка типа: переопределение константного окна»).

так:

window.foo = 5;

это то же самое, что:

var foo = 5;

или:

function() {
foo = 5;
}

, но:

function() {
var foo = 5;
}

в этом случае "foo" является локальным (window.foo === undefined)

3
ответ дан 28 November 2019 в 06:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: