警惕作用域陷阱(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
暂时说不出个所以然来,先把他记录下来。
=====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
暂时说不出个所以然来,先把他记录下来。
相关文章推荐
- JavaScript之eval、Function、setTimeOut、setInterval
- JavaScript秘密花园 - Type Casting,undefined,eval,setTimeout,Auto Semicolon Insertion
- ;(function(){})()这种写法分号的作用 todomvc
- eval在JS中的作用
- settimeout的执行函数作用域问题
- setTimeout设置为0的作用
- C# Eval在asp.net中的用法及作用
- [翻译]JavaScript秘密花园 - Type Casting,undefined,eval,setTimeout,Auto Semicolon Insertion - 全部完成PDF打包下载
- eval()和Function
- 深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解
- 警惕加减交换的陷阱
- eval()函数的作用
- web 开发之js---js 中的定时器setTimeout(function,time),setinterval(function,time)
- perl-- eval的作用
- 警惕beginInvoke的性能陷阱
- eval()函数的作用
- AS3 中,Function.apply、call中第一个参数的作用;与什么时候用;
- eval的两个作用
- js如果在function之前加上感叹号 (!) 等运算符是什么作用
- IE 当eval遇上function的处理