字符串转函数

本文介绍了在JavaScript中如何将字符串转换为函数,主要探讨了eval()和new Function()两种方法,并提供了示例代码。尽管eval()由于安全性和性能问题不被推荐,但new Function()作为更安全的替代方案被提出。文章还分享了对两者深入理解的资源链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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() 两者的对比及深入理解,推荐大家可以看下这篇博客我当时也是在这位博主这得到了解决方法。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值