字符串转函数

之前在做业务的时候遇到了一个需求,需要将字符串转函数的问题。查了很多资料也试了很多方法最终终于解决了这个问题。此文用来做一个记录,防止忘记。

1.eval()

eval() 的参数是一个字符串。如果字符串表示的是表达式,eval() 会对表达式进行求值。如果参数表示一个或多个 JavaScript 语句,那么eval() 就会执行这些语句。具体的大家可以看eval()

let funcStr = "function test(value){console.log(value)}";
let tempFunc = eval("(false || "+funcStr+")");
tempFunc("执行函数");

关于 eval() 的不安全,不推荐使用的原因我相信大家应该都清楚

2.new function() 推荐方法

let func = new Function ([arg1, arg2, ...argN], functionBody);
let funcStr = "function test(value){console.log(value)}";
let tempFunc = new Function('return '+funcStr);
tempFunc()("执行函数")

最后:关于eval()与new function() 两者的对比及深入理解,推荐大家可以看下这篇博客我当时也是在这位博主这得到了解决方法。


版权声明:本文为qq_41949807原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。