[英]Hoisting does not work?
我偶然發現了有關提升https://jsfiddle.net/phusick/h4bh2m4y/的 jsfiddle代碼示例
fn1('hello');
fn2('world');
function fn1(message) {
console.log('mgs1:', message);
}
var fn2 = function(message) {
console.log('msg2:', message);
}
令人驚訝的是,它不起作用:
未捕獲的TypeError:fn2不是函數
該程序有錯誤嗎?
您的代碼與此等效:
// function declarations are hoisted
function fn1(message) {
console.log('mgs1:', message);
}
// variable declarations are hoisted
var fn2;
fn1('hello');
fn2('world');
// assignments to a variable are not hoisted
fn2 = function(message) {
console.log('msg2:', message);
}
掛起了fn1
函數的聲明。
掛起了fn2
變量的聲明。
不掛起對fn2
變量的分配。
聲明被吊起,賦值或初始化不被吊起。
像您對fn2
所做的函數分配與fn1
函數聲明不同。 不會掛起對帶有var
變量的賦值,只掛起變量本身的定義。 因此,在您嘗試調用fn2('world')
, fn2
仍未undefined
。
函數聲明被提升。 ( function fn1(message) { }
)
變量聲明被吊起。 ( var fn2
)
作業不掛起。 ( fn2 = function(message) { }
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.