Если вы используете этот код в скрипке, у которой нет местоположения, установленного на «Нет обертывания», или любых обстоятельствах, в которых вы не находитесь верхний уровень, внешний a
: не глобальная переменная window.a
. Рассмотрим простой пример, когда ваш код обернут внутри функции называется wrappingFunc
:
// THIS would be the global `a`, outside `wrappingFunc`
var a = "now the global a is defined";
function wrappingFunc() {
// this is NOT the global `a`
var a = 1;
function b() {
var a = 10;
alert(window.a);
}
b();
}
wrappingFunc();
Это именно то, что делает JSFiddle когда вы устанавливаете местоположение в onLoad
или onDomready
. (См. What is the difference between onLoad, onDomready, No wrap - in <head>, and No wrap - in <body>?). Мой wrappingFunc
пример в действительности onload
или ondomready
функция прослушивателя, которая предотвращает запуск в глобальном контексте.
Я имею в виду, если я напишу 1-й оператор без var, тогда a = 1, но с var a = undefined. –
Я попробовал, и он предупредил '1'. – zvona
работает и на меня –