讓字串執行的方式

Lena發表於2018-08-25
  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
複製程式碼

相關文章