簡體   English   中英

吊裝不起作用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM