Попытка полностью понять подъем JavaScript

Изменить Похоже, это проблема с моей стороны и с использованием 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 при тестировании.

5
задан Loktar 22 September 2011 в 14:30
поделиться