两者都不推荐使用,两者都可以使用。这里的区别在于一个是命名函数(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了解更多有关匿名功能的信息。
下面是对您的问题的答案:http://stackoverflow.com/a/1013387/236135这是用正确的术语问的问题http://stackoverflow.com/questions/1013385/what-is-the函数表达式与声明中的函数表达式声明 – 2012-02-24 00:46:52