问题
有一段字符串 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)`)();
后记
真香