请选择 进入手机版 | 继续访问电脑版

再探JS---eval函数

[复制链接]
东方龙头 发表于 2020-12-31 20:22:24 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
eval函数

“妖怪”函数?

如果你现在的代码中使用了eval(),记取该咒语“eval()是妖怪”。此方法接受任意的字符串,并看成JavaScript代码来处理惩罚。当有问题的代码是事先知道的(不是运行时确定的),没有来由使用eval()。eval 用的好欠好 其实和使用者的水平有关系
作用域

在eval()中创建的任何变量或函数都不会被提升,因为在剖析代码的时候,它们被包含在一个字符串中;它们只在eval()执行的时候创建
为什么不提倡使用eval函数?


  • 可读性非常差
  • 欠好再做优化和编译
  • 会轻微增加性能消耗
  • 不安全,好比 eval input 的值
直接引用 or 间接引用

  1. var a = 1;(function(){    var a = 2;    eval("console.log(a)");    //输出为2    (0, eval)("console.log(a)");    //输出是1})()
复制代码
间接引用eval,语句会被优化至全局作用域
详见stackoverflow
一些奇妙的用途

  1. var arr = [1,2,3,4,5]function sum(arr) {   return eval(arr.join('+'));}//输出15
复制代码
  1. for (var loop = 1; loop < 10; loop++) {                 eval(&#39;document.getElementById("div"+loop).innerHTML="123"&#39;);}
复制代码
但许多时候,我们仍能找到其他更高效的的方法替代eval
  1. var obj={  name:&#39;lxl&#39;,  age:20}//evalvar property = "name";alert(eval("obj." + property)); // 更好的var property = "name";alert(obj[property]);        //es6解构赋值
复制代码
来源:https://blog.csdn.net/weixin_45683463/article/details/111881777
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )