我知道eval
和setTimeout
既可以接受一个字符串作为(1日)参数,而且我知道,我最好不要用这个。我只是好奇,为什么是有区别:执行字符串代码
!function() {
var foo = 123;
eval("alert(foo)");
}();
!function() {
var foo = 123;
setTimeout("alert(foo)", 0);
}();
第一会的工作,第二个会给出错误:foo is not defined
他们是如何在幕后执行?
不富走出去的范围setTimeout的回调之前被调用? – 2012-07-27 08:57:55
为什么与邪恶的东西搞乱^^不要使用其中任一:) – Andreas 2012-07-27 09:03:06
一个有趣的相关观点[这里](https://stackoverflow.com/q/3492015/465053)。 – RBT 2017-10-07 09:21:44