eval是做什么的?

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);

猜你喜欢

转载自www.cnblogs.com/psxiao/p/11569954.html