Javascript函数定义语法
可能重复:
JavaScript:var functionName = function(){} vs function functionName(){}
在JavaScript中声明函数
我已经看到了2种不同的语法来定义javascript中的函数:
function f() { ... }
以及
var f = function() { ... };
这些有什么区别? 其中之一是否被弃用?
两者都不被弃用,两者都可以工作。 这里的区别在于一个是命名函数( function f()
),另一个是等于函数( var f = function()
)的variables。
设置variables等于函数时必须小心。 这将工作:
var f = function(n) { console.log(n); }; f(3); // logs 3
但是这会打破,因为variables是在调用之后定义的。
f(3); // what is f? breaks. var f = function(n) { console.log(n); };
但正常的function正常工作。
function abc(n) { console.log(n); } abc(3); // logs 3 xyz(5); // logs 5 function xyz(n) { console.log(n); }
这是因为在执行之前对代码进行了分析,并且可以调用所有function。 但设置一个var等于一个函数就像设置一个var其他任何东西。 什么时候发生的顺序很重要。
现在有些更令人困惑的东西…
还有“自动执行”的匿名function。 他们有各种各样的名字。 最常见的做法是这样的:
(function() { // code in here will execute right away // since the () at the end executes this (function(){}) })();
还有一个可以说是更好的版本。
!function() { // again, the tailing () will execute this }();
看看这个堆栈溢出post更多关于匿名函数。