让字符串执行的方式

217 阅读1分钟
  1. eval 因为会取外界的变量,所以不干净的执行
let a = 2
eval('console.log(a)')

// 2
  1. new Function()
// let a = 3;
let str = 'console.log(a)'
let fn = new Function('a',str) //'a'为匿名函数的参数,str为函数体
console.log(fn(4))

// 4
  1. 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