Javascript函数定义语法

时间:2012-02-24 00:35:19

标签: javascript function syntax

  

可能重复:
  JavaScript: var functionName = function() {} vs function functionName() {}
  Declaring functions in JavaScript

我在javascript中看到了两种不同的语法来定义函数:

function f() {
   ...
}

以及

var f = function() {
    ...
};

这些有什么区别?其中一个被弃用了吗?

1 个答案:

答案 0 :(得分:46)

两者都没有被弃用,两者都有效。这里的区别在于,一个是命名函数(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