eval()的作用:
把字符串参数解析成JS代码并运行,并返回执行的结果;
例如:
eval("2+3");//执行加运算,并返回运算值。 eval("var age = 10");//声明一个age变量
eval的作用域
function a(){ eval("var x=1");//等效于 var x = 1; console.log(x);//输出1 } a(); console.log(x);//错误x没有定义
说明作用域在它所有的范围内容有效
示例2:
function a (){ window.eval("var x= 1");//等效于window.x = 1;定义了全局变量 console.log("x");//输出1 } a(); console.log(x);//输出1
这段代码悲剧了?在IE8及IE8一下的版本就不支持了。
解决方法:
functiona(){ if(window.execScript){ // 支持IE8及以下的版本 window.execScript("var x=1"); } else{ //常用的浏览器都支持 window.eval("var x=1"); } console.log(x); } a(); console.log(x);
注意事项
应该避免使用eval,不安全,非常耗性能(2次,一次解析成js语句,一次执行)。
其它作用
由JSON字符串转换为JSON对象的时候可以用eval,例如:
var json ="{name:'Mr.CAO',age:30}"; var jsonObj = eval("("+json")"); console.log(jsonObj);