- eval
因为会取外界的变量,所以不干净的执行
let a = 2
eval('console.log(a)')
// 2
复制代码
- new Function()
// let a = 3;
let str = 'console.log(a)'
let fn = new Function('a',str) //'a'为匿名函数的参数,str为函数体
console.log(fn(4))
// 4
复制代码
- node 执行字符串
// let a = 1;
let vm = require('vm')
let str = 'console.log(a)'
vm.runInThisContext(str)//不会读取外界的变量值,此时会报错
let str = 'let a = 3;console.log(a)'
vm.runInThisContext(str)//不会读取外界的变量值,此时会报错
// 3
复制代码