在Javascript中创建函数的foo:function()样式的正确名称是什么?

时间:2012-05-01 22:41:07

标签: javascript

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

一个是 assignment expression ,声明foo是函数返回的任何内容,即

var foo = function(){

//do something
};

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

  

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

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

myobject.foo();

第二种表格的正确名称是什么?

2 个答案:

答案 0 :(得分:3)

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

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

foo = something

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

答案 1 :(得分:1)

以下内容:

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

右侧是FunctionExpression,它与FunctionDeclaration的不同之处在于,在执行代码之前不会创建函数,即在处理函数声明并且发生变量instatiation之后。 / p>

不是函数声明。

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

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

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

它也只在代码执行时创建。上述两者之间没有实际区别,使用最好的东西。

修改

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