eval with Function setTimeout

eval:

eval中引用变量会扩展到调用他的外部,定义的函数/变量(相当调用他的外面定义的)从调用处开始生效。

 

with(obj){

var a=5//最高优先级

b=5//先在obj中b,没有时,再沿着作用域链找b,直到window.b

}

 

new Function("code string") //code string中未直接申明的变量,都来自window,而不像上面两种情况会在作用域链中查找。

/////////////////////

var b=1;

function(){

var b=2;

setTimeout(/*"alert(b)"*/function(){alert(b)},0)//参数为字符串时,会new Function() alert(b)=3

}()

posted @ 2012-03-15 23:36  wuhao12  阅读(199)  评论(0编辑  收藏  举报