Edycja Wygląda na to, że był to problem z mojej strony i mojego używania jsfiddle:?Próba w pełni zrozumienia JavaScriptu podnoszenia
Czytałem ostatnio kilka artykułów o dźwiganiu, jedna to by Nicholas Zakas, a druga to by Ben Cherry.
Im próbuje wykonać przykłady i po prostu sprawdzić na własną rękę, aby upewnić się w pełni zrozumieć to, ale Im mający problem głównie z tego przykładu,
if (!('a' in window)) {
var a = 1;
}
console.log(a);
Zamiast rejestrowania undefined
jego rejestrowania 1
. Jeśli wszystko rozumiem poprawnie, to a
powinno być undefined
, ponieważ powinien być istniejący w zasięgu okna ze względu na wyciągniętą do góry instrukcję var, więc nie należy jej przypisywać wartości.
Ale dodaje działa zgodnie z oczekiwaniami,
(function bar(){
console.log(foo);
var foo = 10;
console.log(baz);
})();
foo
jest undefined
i baz
nie jest zdefiniowana. Mam tutaj fiddle z obydwoma przykładami. Naprawdę po prostu próbuję to objąć. Czy coś się zmieniło, skoro te artykuły zostały napisane? Jeśli ktoś może rzucić trochę światła na to, będzie to docenione. Korzystam z Chrome 14 podczas testowania.
biegnę swoje skrzypce w Google Chrome i drukuje 'undefined'. Aby uzyskać dobre wyjaśnienie dotyczące podnoszenia, możesz przyjrzeć się wzorcom * O'Reilly JavaScript *. Istnieje dedykowany ** akapit **. – user278064
Tak, najwyraźniej wynikało to z tego, że nie używam poprawnie jsfiddle doh. – Loktar