Javascript Function Definition Syntax
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
JavaScript: var functionName = function() {} vs function functionName() {}
Declaring functions in JavaScript
我已经看到两种不同的语法来定义javascript中的函数:
1 2 3 | function f() { ... } |
以及
1 2 3 | var f = function() { ... }; |
这些有什么区别?其中一个被否决了吗?
两者都不推荐,两者都可以。这里的区别在于,一个是命名函数(
当设置变量等于函数时必须小心。这将起作用:
1 2 | var f = function(n) { console.log(n); }; f(3); // logs 3 |
但这将中断,因为变量是在调用它之后定义的。
1 2 | f(3); // what is f? breaks. var f = function(n) { console.log(n); }; |
但正常功能正常。
1 2 3 4 5 6 | function abc(n) { console.log(n); } abc(3); // logs 3 xyz(5); // logs 5 function xyz(n) { console.log(n); } |
这是因为代码是在执行前分析的,所有函数都可以调用。但是,将var设置为函数就像将var设置为任何其他值一样。事情发生的顺序很重要。
现在,对于一些更令人困惑的事情…
还有"自执行"匿名函数。他们有各种各样的名字。最常见的方法如下:
1 2 3 4 | (function() { // code in here will execute right away // since the () at the end executes this (function(){}) })(); |
还有一个可以说更好的版本。
1 2 3 | !function() { // again, the tailing () will execute this }(); |
有关匿名函数的更多信息,请查看此堆栈溢出日志。