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
}()