我遇到了这两种在Javascript中声明函数的方法。
一个是 assignment expression ,声明foo
是函数返回的任何内容,即
var foo = function(){
//do something
};
另一种声明函数的方式似乎使它成为更大对象的属性:
foo:function(){//做某事}
我假设你需要在对象上下文中访问该函数时使用第二种形式,即:
myobject.foo();
第二种表格的正确名称是什么?
答案 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和命名函数表达式的问题,通常建议使用该名称。)