关于javascript:功能宣言

Functions Declarations

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
JavaScript: var functionName = function() {} vs function functionName() {}
What is the difference between a function expression vs declaration in Javascript?

声明javascript函数的正确方法是什么?

我从codeacademy.com上找到了:

1
2
3
var someFunction = function(paramA, paramB){
    // do some function here
}

但是因为我的编程基础是PHP,所以我更喜欢用这种方式声明函数:

1
2
3
function someFunction(paramA, paramB){
    // do some function
}

我担心的是,哪种方法是推荐的函数声明方法,我担心如果我的首选方法有一些后果,但我非常喜欢这种方法,因为它使我的NetBeans代码导航器可以读取我的所有函数。

Netbeans Code Navigator


两者都可以接受。实际上,您也可以这样做:

1
2
3
foo = function bar() {
          console.log(arguments.callee.name);
};

如果你打电话给foo(),你会在控制台看到"bar"

第一个方法创建一个匿名函数并将其赋给一个变量。

第二个方法创建一个命名函数并将其放置在当前范围内。

第三个方法创建一个命名函数并将其分配给一个变量。但是,这次,该名称只存在于该函数的范围内。

声明一个名为(function name () {}的函数)的优点是,您可以更容易地从内部调用函数,这对于实现递归算法可能是必要的。如果不这样做,则必须使用arguments.callee.name来调用其内部的函数,但这在MDN中是被警告的。

所有这些都是一种冗长的说法,即两者都是可接受的,如果有疑问,使用命名函数也不会有太大的错误。