题目点评

这题目的看起来比较简单,但是总感觉有没有那么简单,确实是这样子。所以回答这个题目要从不同的角度去回答。首先回答清楚它是干什么的有什么用,然后在谈谈它对作用域的影响,然后就是执行效率的问题,最后谈谈eval()的其它作用。这样答下来自己都觉得满意了吧!

eval()的作用

把字符串参数解析成JS代码并运行,并返回执行的结果;

例如:

eval("2+3");//执行加运算,并返回运算值。
eval("varage=10");//声明一个age变量
eval的作用域

functiona(){
 eval("var x=1"); //等效于 var x=1;
 console.log(x); //输出1
}
a();
console.log(x);//错误 x没有定义
说明作用域在它所有的范围内容有效

示例2:

functiona(){
 window.eval("var x=1"); // 等效于window.x=1;定义了全局变量
 console.log(x); //输出1
}
a();
console.log(x);//输出1
这段代码悲剧了?在IE8及IE8一下的版本就不支持了。

Web前端面试指导(三十七):eval是做什么的?

 

解决方法:

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,例如:

varjson="{name:'Mr.CAO',age:30}";
varjsonObj=eval("("+json+")");


转载:https://blog.csdn.net/lxcao/article/details/52782771 
 

相关文章:

  • 2021-11-14
  • 2022-01-09
  • 2021-08-28
  • 2021-12-06
  • 2021-12-03
  • 2021-09-21
  • 2022-12-23
  • 1970-01-01
猜你喜欢
  • 2021-11-09
  • 2022-12-23
  • 2021-11-09
  • 2022-12-23
  • 2021-12-28
相关资源
相似解决方案