尝试这样做时:
setTimeout(function(){alert("Boo");}, 500);
我不小心写了这个:
setTimeout(new function(){alert("Boo");}, 500);
前一个版本等待500毫秒,然后发出警报。后者立即发出警报。
为什么在函数前添加new
会导致此行为?
答案 0 :(得分:5)
使用new
使用匿名函数作为其构造函数创建一个新对象,因此您的函数会立即运行并发出警报。
答案 1 :(得分:2)
后者实例化Object
并立即调用其构造函数。
答案 2 :(得分:0)
new function(){alert("Boo");}
相当于
var temp1 = function(){alert("Boo");};
var temp2 = new temp1();
你看到的第二行使用temp1作为构造函数来调用你的函数。