这些方式在javascript中定义函数是否相等?

时间:2011-09-18 20:46:53

标签: javascript

我想知道以下javascript编写函数的方式是否相等。

对我而言,它们似乎产生了相同的结果,但它们可能会有什么不同?

第一种方式:

(function(){
    alert('ciao')
})();

第二种方式:

new function bar(){alert('ciao')}; 

2 个答案:

答案 0 :(得分:3)

第二个返回函数的新实例,就好像它是一个构造函数。

所以,这些是公平的:

传统方法:

function bar() {
    this.x = 5;
};
var x = new bar();

懒惰的单行。

var x = new function bar() { this.x = 5; };

唯一的区别是你以后不能重复使用吧。

如果您不相信我,请在两个示例中尝试console.log(x.y);

你的第一个例子是一个匿名函数,它没有被实例化,只是被调用。

答案 1 :(得分:2)

第一个执行函数并返回它的结果。第二个执行函数并返回一个对象。

编辑:示例:

enter image description here