可能重复:
JavaScript: var functionName = function() {} vs function functionName() {}
我一直在阅读CodeAcademy的Javascript课程,但有些事情已经过去了。我理解函数是如何工作的,我试图围绕OOP和对象/方法。
我的问题是,创建这样的函数有什么区别:
function countTo(number){
for (var i=1; i<=number; i++){
console.log(i);
}
}
countTo(15);
并创建一个这样的函数:
var countToTwo = function(number){
for (var i=1; i<=number; i++){
console.log(i);
}
};
countToTwo(27);
两者都做同样的事情并且具有相同的输出。它们完全相同/可互换吗?在创建函数时使用哪一个是否重要?
答案 0 :(得分:8)
第一个是函数声明,并且是“悬挂”的,这意味着它可以立即在上下文中的任何位置使用。
第二个是函数表达式,并且被视为与任何其他变量声明/赋值一样。 countToTwo
的声明已被提升并立即可用于声明范围内的任何位置,但赋值保留在完全相同的位置。
缺点是,在解析表达式之前,您无法调用声明为表达式的函数。
这段代码应该更清楚地说明一下。
foo();
//blah();
function foo(){
alert('hoisted and works');
}
var blah = function(){
// not hoisted, would fail if called
}