(1) function add (a, b) {
return a + b;
}
(2) var add = function (a, b) {
return a + b;
}
我很容易接受函数是一种可以像任何其他变量一样传递的对象的概念。所以我完全理解
(2)
的作用。它创建一个函数并将其分配给 add
(假设这在全局范围内,因此 add
是一个全局变量)。但如果我使用 (1)
呢?执行顺序会有所不同:如果我使用 (1)
,那么我可以在代码中引用 add()
在定义 add()
的位置之前,但如果我使用 (2)
,则必须先将函数分配给 add
,然后才能开始引用 add()
。
(1)
只是 (2)
的一种捷径,尽管它恰好像其他 C 风格语言一样允许我们在使用函数的地方 "下面" 定义函数。或者它在内部是一种不同类型的函数吗?哪一种更符合 JavaScript 的精神(如果这个术语不太模糊的话)?您是否会限制自己只使用其中一种,如果是,那么是哪一种?
FunctionStatement
(http://www.jibbering.com/faq/#functionStatement, http://kangax.github.com/nfe/#function-statements)来解决这个问题。JScript对规范的尊重较少,内部执行神马就不得而知了。 - Tim Down