我想知道以下javascript编写函数的方式是否相等。
对我而言,它们似乎产生了相同的结果,但它们可能会有什么不同?
第一种方式:
(function(){
alert('ciao')
})();
第二种方式:
new function bar(){alert('ciao')};
答案 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)
第一个执行函数并返回它的结果。第二个执行函数并返回一个对象。
编辑:示例: