eval全局作用域和局部作用域的坑!
1、eval 是个函数,他可以被赋值给变量,例如 var evalg = eval; evalg("alert(1)");
2、eval被赋值时,也会把当前eval所处的变量作用域也赋值过去;
var x = 1,evalg = eval; function a(){ var x = 3; eval("alert(x)");//3 evalg("alert(x)");//1 } //IE9之前的浏览器 没有全局eval的概念, 但是可以用 execScript()来代替 var x = 1; function a(){ var x = 3; eval("alert(x)");//3 execScript("alert(x)");//1 }
ECMAScript5严格模式 eval将成为保留字