Возьмите этот фрагмент 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>
Окно - это базовая область действия всех объектов javascript, и оно автоматически «присоединяется» к каждой определяемой вами переменной, если только вы не используете «var» перед объявлением, в этом случае область действия переменной является локальной (это означает, что она содержится внутри родительской функции или также является глобальным, если вы объявляете свою переменную вне функционального блока). Кроме того, окно определено как константа , то есть вы не можете переопределить объект окна (вы получите сообщение об ошибке «ошибка типа: переопределение константного окна»).
так:
window.foo = 5;
это то же самое, что:
var foo = 5;
или:
function() {
foo = 5;
}
, но:
function() {
var foo = 5;
}
в этом случае "foo" является локальным (window.foo === undefined)