Javascript函数定义语法

可能重复:
JavaScript:var functionName = function(){} vs function functionName(){}
用JavaScript声明函数

我已经看到了用于在javascript中定义函数的2种不同的语法:

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
}();

看看这个堆栈溢出帖子了解更多匿名函数。

链接地址: http://www.djcxy.com/p/2833.html

上一篇: Javascript Function Definition Syntax

下一篇: What does it mean when a variable equals a function?