字符串计算
let num = eval("1+1")
=> 2let 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() 被调用时的作用域,这也有可能导致一些不同方式的攻击