初学者Javascript:'function xyz(){}'和'var xyz = function(){}'之间有什么区别?

JVG*_*JVG 3 javascript

可能重复:
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);
Run Code Online (Sandbox Code Playgroud)

并创建一个这样的函数:

var countToTwo = function(number){
    for (var i=1; i<=number; i++){
        console.log(i);
    }
};

countToTwo(27);
Run Code Online (Sandbox Code Playgroud)

两者都做同样的事情,并具有相同的输出.它们完全相同/可互换吗?在创建函数时使用哪一个是否重要?

Ada*_*kis 8

第一个是函数声明,并且是"悬挂"的,这意味着它可以立即在上下文中的任何位置使用.

第二个是函数表达式,并且被视为与任何其他变量声明/赋值一样.声明在其声明countToTwo的范围内的任何地方都会被提升并立即可用,但作业仍然保持在完全相同的位置.

缺点是,在解析表达式之前,您无法调用声明为表达式的函数.

这段代码应该更清楚地说明一下.

foo();

//blah();

function foo(){
    alert('hoisted and works');
}

var blah = function(){
    // not hoisted, would fail if called
}
?
Run Code Online (Sandbox Code Playgroud)

现场演示