JavaScript Eval

作者: lio_zero | 来源:发表于2022-05-31 13:45 被阅读0次

    本文已整理到 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}
    

    更多资料

    更多详细内容可以查看:

    相关文章

      网友评论

        本文标题:JavaScript Eval

        本文链接:https://www.haomeiwen.com/subject/odcsrrtx.html