2017-03-06 77 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"); 
}