2017-03-06 95 views
-1

來源:https://developer.mozilla.org/el/docs/Web/JavaScript/Reference/Operators/function
「與函數聲明不同,JavaScript中的函數表達式不會被提升,在聲明它們之前,不能使用函數表達式。
函數表達式提升?

例子:

var hey = function(){ 
    console.log("hi"); 
} 

Chrome的控制檯:window.hey返回

function(){ 
console.log("hi"); 
} 
+2

這裏有問題嗎? – RobG

+1

我在這裏沒有看到任何問題,請說清楚你想知道什麼。 – cyrix

+0

什麼問題?你在**聲明函數後使用'window.hey' **,所以你引用的文檔不適用。 – Barmar

回答

1

那是什麼要說的是,你不能寫:

hey(); 
var hey = function() { 
    console.log("hi"); 
} 

因爲你」在分配func之前重新使用變量hey重刑表達。但是你可以

hey(); 
function hey() { 
    console.log("hi"); 
} 

因爲函數聲明提升到包含函數的開始。

欲瞭解更多信息,請參閱var functionName = function() {} vs function functionName() {}

0

要建立在@ Barmar的答案,當你這樣做:

hey(); 
var hey = function() { 
    console.log("hi"); 
} 

技術上的變量聲明仍然懸掛,但任務仍然在那裏寫的,所以它相當於:

var hey; 
hey(); // hey is declared as a variable, but is still undefined. 
hey = function() { 
    console.log("hi"); 
}