2

我遇到了这两种在 Javascript 中声明函数的方式。

一种是赋值表达式,它声明foo函数返回的任何内容,即

var foo = function(){

//do something
};

声明函数的另一种方式似乎使它成为更大对象的属性:

foo: function() { //做某事 }

我假设当您需要在对象上下文中访问该函数时,您会使用第二种形式,即:

myobject.foo();

第二种形式的正确名称是什么?

4

2 回答 2

3

两者都是匿名函数,第一个分配给变量,第二个分配给对象文字中的属性。

请注意,赋值表达式只是:

foo = something

在这种情况下,事物恰好是一个匿名函数,但术语赋值表达式用于所有赋值,而不仅仅是函数。

于 2012-05-01T22:45:29.350 回答
1

以下:

var foo = function(){
  //do something
}; 

右侧是FunctionExpression,它与 FunctionDeclaration 的不同之处在于,在执行代码之前不会创建函数,这是在处理函数声明并发生变量实例化之后。

不是函数声明。

> foo: function() {
>  //do something
> }

这也是一个函数表达式,将其与第一个形式相同:

var obj = {};
obj.foo = function(){...};

它也仅在执行代码时创建。以上两者之间没有实际区别,使用任何看起来最好的东西。

编辑

哦,在函数表达式中,名称是可选的(由于 IE 和命名函数表达式的问题,通常建议不要使用)。

于 2012-05-01T22:50:58.230 回答