JavaScript Eval

本文已整理到 Github,地址 👉 blog

如果我的内容帮助到了您,欢迎点个 Star 🎉🎉🎉 鼓励鼓励 :) ~~

我希望我的内容可以帮助你。现在我专注于前端领域,但我也将分享我在有限的时间内看到和感受到的东西。


先说明。eval 已过时,尽量不要在使用它。

eval 执行包含代码的字符串,例如:

eval('var x = "Hello eval!"')
x // 'Hello eval!'

eval 存在几个问题:

  • 安全性:您的字符串可以通过第三方脚本或用户输入注入其他命令。
  • 调试:很难调试错误,您没有行号或明显的故障点。
  • 优化:JavaScript 解释器不一定能预编译代码,因为它可能会发生变化。虽然解释器的效率越来越高,但几乎可以肯定它的运行速度会比本地代码慢。
  • 性能:非常耗性能,它会执行 2 次,一次解析成 JS 语句,一次执行。

不幸的是,eval 非常强大,但经验不足的开发人员很容易过度使用该命令。

尽管有警告,但 eval 仍然可以工作(即使在严格模式下),但您通常可以避免它。

过去,它主要用于对 JSON 字符串进行反序列化:

const json = '{"name":"O.O","age":20}'

eval('('+ json +')') // {name: 'O.O', age: 20}

但现在我们有了更安全的 JSON.parse 方法:

JSON.parse(json) // {name: 'O.O', age: 20}

更多资料

更多详细内容可以查看:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • eval命令接受一个字符串作为参数,并将这个字符串当作语句执行。 上面代码将字符串当作语句运行,生成了变量a。如果...
    AC编程阅读 4,643评论 0 0
  • 1.作用域javascript如同其他语言一样同样的有其作用域,我们把javascript的作用域可看做是自定的一...
    O8阅读 2,635评论 0 0
  • 目录 1.静态作用域与动态作用域 2.变量的作用域 3.JavaScript 中变量的作用域 4.JavaScri...
    一缕殇流化隐半边冰霜阅读 11,931评论 37 113
  • @转自GitHub 介绍js的基本数据类型。Undefined、Null、Boolean、Number、Strin...
    YT_Zou阅读 4,943评论 0 0
  • 1.eval的初体验 eval这个语句,怎么说呢?十分好用,其实换句话说“用来装逼真是挺不错的。”它接收一个字符串...
    lanzhiheng阅读 4,622评论 0 6