将函数放在变量中的JavaScript优势?

Qco*_*com 9 javascript variables function

我已经看到最近的代码示例将函数放在变量中,然后像普通函数一样调用函数.

如:

var myFunctionName = function() {
    Code Here...
}

myFunctionName();
Run Code Online (Sandbox Code Playgroud)

我相信更先进的场景有很多优点,但我只是好奇.

Jos*_*h K 12

没有优点,你没有变量中放置一个函数,只是简单地命名函数.

function foo() { /* ... */ }
var foo = function () { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

除了一件事,这些完全相同.

这有效:

foo("Hello!");
/* Later on... */
function foo() { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

这不起作用:

foo("Hello!");
/* Later on... */
var foo = function () { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

JavaScript解释器将function foo在运行之前对所有的进行预处理,并将它们推送到程序的顶部,以便它们可用,但是不会那样做var foo = function.


Mat*_*ing 5

这称为函数表达式,其行为与函数声明略有不同.除此之外,当你可以参考它时,它的行为也不同.例如,如果你这样做:

var myFunctionName = function() {
    Code Here...
}
Run Code Online (Sandbox Code Playgroud)

在分配之后,您不能打电话或参考该功能,而

function myFunctionName() {
    Code Here...
}
Run Code Online (Sandbox Code Playgroud)

即使在声明之前,也可以引用同一范围内的任何地方.这是因为Javascript中的一个名为"hoisting"的功能,其中所有函数声明都移到了幕后代码块的顶部.

也可以看看:

JavaScript中的函数表达式与声明有什么区别?

http://www.adequatelygood.com/2010/2/JavaScript-Scoping-and-Hoisting