Редактировать
Похоже, это была проблема с моей стороны и моего использования jsfiddle:?
В последнее время я читал пару статей о подъеме, одна из них Николаса Закаса , а другая Бен Черри .
Я пытаюсь следовать примерам и просто протестировать самостоятельно, чтобы убедиться, что я полностью понимаю, но у меня возникла проблема в основном с этим примером,
if (!('a' in window)) {
var a = 1;
}
console.log(a);
Вместо регистрации undefined
это регистрация 1
. Если я все правильно понимаю, a
должно быть undefined
, потому что оно должно существовать в области видимости из-за оператора var, поднимаемого вверх, поэтому ему не должно быть присвоено значение.
Но следующее действует, как и ожидалось,
(function bar(){
console.log(foo);
var foo = 10;
console.log(baz);
})();
foo
равно undefined
, а baz
не определено. У меня есть скрипка здесь с обоими примерами. На самом деле просто пытаюсь обернуть мою голову вокруг этого. Что-то изменилось с тех пор, как эти статьи были написаны? Если кто-то может пролить свет на это, это будет оценено. Я использую Chrome 14 при тестировании.