摘要:JavaScript hoisting
先看程式碼吧:
var myvar = 'my value';
(function() {
alert(myvar); // undefined!!
var myvar = 'local value';
})();
hoisting,舉起、升起…
瀏覽器是這樣解讀的,所以 undefined也就不那麼意外了吧。 from: http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-javascript-hoisting-explained/
function宣告其實也是一樣:
var myvar = 'my value';
(function() {
var myvar;
alert(myvar); // undefined
myvar = 'local value';
})();
a();
function a() { console.log("this is a"); };
a();
console.log("typeof b:", typeof b);
var b = function () { console.log("this is b"); };
b();
a 會同時完成宣告跟設定值
b 會先宣告(一開始的值是 undefined),一直到設定值之後才會是 function