我知道这一点,eval
并且setTimeout
都可以接受一个字符串作为 (1 st) 参数,而且我知道我最好不要使用它。我只是好奇为什么会有区别:
!function() {
var foo = 123;
eval("alert(foo)");
}();
!function() {
var foo = 123;
setTimeout("alert(foo)", 0);
}();
第一个会起作用,第二个会出错:foo is not defined
他们是如何在幕后被处决的?