2011-09-18 63 views
3

我想知道在javascript中编写函数的方式是否相同。这些在javascript中定义函数的方式是否相等?

对我来说,他们似乎产生了相同的结果,但在他们可以不同?

第一种方式:

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

方式二:

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

清除重复。 http://stackoverflow.com/questions/1140089/how-does-an-anonymous-function-in-javascript-work(可以挤奶这个问题:P) – Layke

+3

舌头在脸颊答案:不同的是,第二个是坏的形式和第一个是普遍可以接受的。 – tjameson

回答

3

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

所以,这些都是equivelent:

传统方法:

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

懒惰的单行。

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

唯一的区别是你不能在以后重用栏。

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

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

2

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

编辑:例如:

enter image description here

相关问题