为什么带有新函数的setTimeout会忽略等待间隔?

时间:2011-09-15 23:30:27

标签: javascript

尝试这样做时:

setTimeout(function(){alert("Boo");}, 500);

我不小心写了这个:

setTimeout(new function(){alert("Boo");}, 500);

前一个版本等待500毫秒,然后发出警报。后者立即发出警报。

为什么在函数前添加new会导致此行为?

3 个答案:

答案 0 :(得分:5)

使用new使用匿名函数作为其构造函数创建一个新对象,因此您的函数会立即运行并发出警报。

答案 1 :(得分:2)

后者实例化Object并立即调用其构造函数。

答案 2 :(得分:0)

new function(){alert("Boo");} 

相当于

var temp1 = function(){alert("Boo");};
var temp2 = new temp1();

你看到的第二行使用temp1作为构造函数来调用你的函数。