2014-02-16 73 views
2

我知道这两者之间的区别是:什么时候应该使用无功功能,并且功能

var myFunction = function(a) { ... } 
function myFunction2(a) { ... } 

我只是想不通我应该使用第一个,当第二个。

我看到这个var functionName = function() {} vs function functionName() {}但正如我所说,我知道这两者之间的区别是什么。

+0

@elclanrs,这不是!!!!!!!!! –

+0

这可能很有趣:http://javascriptweblog.wordpress.com/2010/07/06/function-declarations-vs-function-expressions/ – idmean

+1

我不认为这足以证明重复,这就是为什么我投票关闭。其他答案中提到的区别在于提升,匿名函数没有名称(duh)。 – elclanrs

回答

1

好吧,这两个选项在正文和重复文章中都有说明。如果你使用:

var functionOne = function() { … } 
function functionTwo() { … } 

然后functionOne不会在其定义之前的块存在,并正在运行时定义。而另一个选项functionTwo是在解析时定义的,可以在程序中的任何地方调用。另一个变化是函数内的this的行为。

所以基本上,你的问题是:

  • 我怎么想我的范围功能?
  • 如果范围无关紧要,我更喜欢运行时还是解析时间?

要获得完整回答这些问题,我真的建议你阅读和克罗克福德"Javascript the good parts"重读短的书,它看起来像@ wumm的suggested article是非常相关的,以及。

+0

我明白你的意思,但我相信术语“解析时间”在这里是不正确的。 JavaScript源代码在开始时被完全解析,然而在任何情况下,只有代码实际运行时,函数才会存在。区别在于,在执行代码的任何其他语句之前,将评估所有变量和函数声明。 –

相关问题