Skip to content

JavaScript 字符串执行代码

Published: at 03:28 PMSuggest Changes

问题

有一段字符串 let string = 'let a = 123;console.log(a)',需要运行这段字符串。

我第一个想到的就是是 eval

但是 MDN 提到了:永远不要使用 eval!

使用 eval 的糟糕代码:

function looseJsonParse(obj) {
  return eval('(' + obj + ')');
}
console.log(looseJsonParse('{a:(4-1), b:function(){}, c:new Date()}'));

不用 eval 的更好的代码:

function looseJsonParse(obj) {
  return Function('"use strict";return (' + obj + ')')();
}
console.log(looseJsonParse('{a:(4-1), b:function(){}, c:new Date()}'));

解决

Function(`let string = 'let a = 123;console.log(a)`)();

后记

真香


Previous Post
JS 可选链操作符
Next Post
JavaScript 获取图片宽高