Possible Duplicate:
JavaScript: var functionName = function() {} vs function functionName() {}
Declaring functions in JavaScript
我见过在 javascript 中定义函数的两种不同语法:
function f() {
...
}
还有
var f = function() {
...
};
它们之间有什么区别?其中之一是否已弃用?
两者都没有被弃用,并且都可以工作。这里的区别在于,一个是命名函数(function f()
),而另一个是一个等于函数的变量(var f = function()
)。
将变量设置为函数时必须小心。这将起作用:
var f = function(n) { console.log(n); };
f(3); // logs 3
但这会中断,因为变量是在调用它之后定义的。
f(3); // what is f? breaks.
var f = function(n) { console.log(n); };
但正常功能工作正常。
function abc(n) { console.log(n); }
abc(3); // logs 3
xyz(5); // logs 5
function xyz(n) { console.log(n); }
这是因为代码在执行前已经过分析,所有函数都可以调用。但是将 var 设置为函数就像将 var 设置为其他任何东西一样。它发生的顺序很重要。
现在来看一些更令人困惑的东西......
还有“自执行”的匿名函数。他们有各种各样的名字。最常见的方法如下所示:
(function() {
// code in here will execute right away
// since the () at the end executes this (function(){})
})();
还有一个可以说是更好的版本。
!function() {
// again, the tailing () will execute this
}();
查看 this Stack Overflow post有关匿名函数的更多信息。