您的位置:首页 > 其它

警惕作用域陷阱(setTimeout,eval,Function)

2012-02-02 21:59 253 查看
不知道该怎么命名这个题目。暂时先这么着吧,先看下边测试。

=====setTimeout================================>>>>>>
第一种:
var x = "w.x";
function a(){
  var x = "a.x";
  setTimeout("alert(x)");
}
a();  //-->"w.x"

第二种:
var x = "w.x";
function a(){
  var x = "a.x";
  setTimeout(function(){alert(x)});
}
a();  //-->"a.x"

=====eval================================>>>>>>
第一种:
var x = "w.x";
function a(){
  var x = "a.x";
eval("alert(x)");
}
a(); //--> a.x

第二种:
var x = "w.x";
function a(){
  var x = "a.x";
window.eval("alert(x)");
}
a(); //--> w.x

=====function================================>>>>>>
第一种:
var x = "w.x";
function a(){
  var x = "a.x";
function b(){
    alert(x);  
  }
  b();
}
a(); //--> a.x

第二种:
var x = "w.x";
function a(){
  var x = "a.x";
  var b = Function("alert(x)");
}
a(); //--> w.x

暂时说不出个所以然来,先把他记录下来。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: