我知道这两者之间的区别是:什么时候应该使用无功功能,并且功能
var myFunction = function(a) { ... }
function myFunction2(a) { ... }
我只是想不通当我应该使用第一个,当第二个。
我看到这个var functionName = function() {} vs function functionName() {}但正如我所说,我知道这两者之间的区别是什么。
我知道这两者之间的区别是:什么时候应该使用无功功能,并且功能
var myFunction = function(a) { ... }
function myFunction2(a) { ... }
我只是想不通当我应该使用第一个,当第二个。
我看到这个var functionName = function() {} vs function functionName() {}但正如我所说,我知道这两者之间的区别是什么。
好吧,这两个选项在正文和重复文章中都有说明。如果你使用:
var functionOne = function() { … }
function functionTwo() { … }
然后functionOne
不会在其定义之前的块存在,并正在运行时定义。而另一个选项functionTwo
是在解析时定义的,可以在程序中的任何地方调用。另一个变化是函数内的this
的行为。
所以基本上,你的问题是:
要获得完整回答这些问题,我真的建议你阅读和克罗克福德"Javascript the good parts"重读短的书,它看起来像@ wumm的suggested article是非常相关的,以及。
我明白你的意思,但我相信术语“解析时间”在这里是不正确的。 JavaScript源代码在开始时被完全解析,然而在任何情况下,只有代码实际运行时,函数才会存在。区别在于,在执行代码的任何其他语句之前,将评估所有变量和函数声明。 –
@elclanrs,这不是!!!!!!!!! –
这可能很有趣:http://javascriptweblog.wordpress.com/2010/07/06/function-declarations-vs-function-expressions/ – idmean
我不认为这足以证明重复,这就是为什么我投票关闭。其他答案中提到的区别在于提升,匿名函数没有名称(duh)。 – elclanrs