Изменить Похоже, это проблема с моей стороны и с использованием 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
is undefined
, а baz
не определено. У меня здесь скрипка с обоими примерами. На самом деле просто пытаюсь осознать это. Может, что-то изменилось с тех пор, как были написаны эти статьи? Если кто-то может пролить свет на это, мы будем признательны. Я использую Chrome 14 при тестировании.