时间:2021-07-01 10:21:17 帮助过:9人阅读
输出5,即没有修改全局变量x,修改的仍然是局部变量x。
...
function callback(str){
var json = eval('(' + str + ')');
}
...
通常直接使用eval,而非var json = window.eval('(' + str + ')');
又比如调试时使用alert,很少有人使用window.alert;IE中获取事件对象使用event,很少有人使用window.event。(Firefox中在某些情况下也支持event而不支持window.event。感兴趣的同学看看这篇 获取事件对象的全家)
但由于各个引擎实现差异,它们的区别还是有的。
代码如下:输出的都是5,说明调用fn后eval修改的是fn内的局部变量x,而非全局的x。即eval执行的闭包环境是在fn内。
var x = 5;
function fn(){
var x = 'jack';
eval('x=10;');
}
fn();
alert(x); // -->5
所有浏览器中
修改下,把以上代码的eval换成window.eval,测试后发现各个浏览器中的表现不一样了。
IE6/7/8 : 仍然