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.
这称为函数表达式,其行为与函数声明略有不同.除此之外,当你可以参考它时,它的行为也不同.例如,如果你这样做:
var myFunctionName = function() {
Code Here...
}
Run Code Online (Sandbox Code Playgroud)
在分配之后,您不能打电话或参考该功能,而
function myFunctionName() {
Code Here...
}
Run Code Online (Sandbox Code Playgroud)
即使在声明之前,也可以引用同一范围内的任何地方.这是因为Javascript中的一个名为"hoisting"的功能,其中所有函数声明都移到了幕后代码块的顶部.
也可以看看:
http://www.adequatelygood.com/2010/2/JavaScript-Scoping-and-Hoisting