2013-01-22 42 views
-1

可能重复:
JavaScript: var functionName = function() {} vs function functionName() {}
What is the difference between a function expression vs declaration in Javascript?函数的声明

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

从codeacademy.com走到这个地步:

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

但是因为我的编程基础是PHP,我更喜欢用这种方式声明功能:

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

什么,我关心的是哪一种是推荐的函数声明方式,恐怕如果我喜欢的方式有一些后果,但我非常喜欢这种方式,因为这使得我的NetBeans代码导航器可以读取我所有的函数。

Netbeans Code Navigator

+1

从技术上讲,只有第二个是声明。查看Diodeus建议的副本。 – bfavaretto

回答

2

两者都是可以接受的。事实上,你也可以这样做:

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

如果你再调用foo(),你会看到在控制台"bar"

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

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

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

使用名称声明函数(function name() {})的优点是,您可以从内部更容易地调用该函数,这可能是实现递归算法所必需的。如果你不这样做,你必须使用arguments.callee.name来调用它自己的函数,但是在MDN中被警告。

所有这一切都是一种冗长的说法,或者是可以接受的,如果有疑问,使用命名函数不会出错。