【JavaScript】有趣的eval

字符串计算

  1. let num = eval("1+1") => 2
  2. let num = eval("x=10;y=20;x*y") => 200

JSON转换

  • 函数作为字符串被定义需要“(”和“)”作为前缀和后缀
  • 示例:
var fctStr1 = 'function a() {}'
var fctStr2 = '(function a() {})'
var fct1 = eval(fctStr1)  // 返回undefined
var fct2 = eval(fctStr2)  // 返回一个函数
  • 实例:
    let num = eval("("+ "{'name':'zhangsan', age:20}" +")") => { name: ‘zhangsan’, age: 20 }


但是!玩玩就好!正式环境永远不要使用 eval!

eval() 是一个危险的函数, 它使用与调用者相同的权限执行代码。如果你用 eval() 运行的字符串代码被恶意方(不怀好意的人)修改,您最终可能会在您的网页/扩展程序的权限下,在用户计算机上运行恶意代码。更重要的是,第三方代码可以看到某一个 eval() 被调用时的作用域,这也有可能导致一些不同方式的攻击

猜你喜欢

转载自blog.csdn.net/m0_46537958/article/details/108534977