You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何执行JavaScript中以字符串形式存储在变量内的JS代码

JavaScript 执行字符串形式存储代码的方案

首先先修正你示例代码里的语法问题:你定义的code变量存在引号嵌套错误,外层用双引号包裹字符串时,内部的双引号没有转义,会直接触发语法报错,正确的code定义可以参考如下写法:

// 用反引号包裹外层,避免引号冲突
const code = `res.send("Hi")`;

修正字符串定义后,你可以选择以下两种方式执行字符串里的代码:

方法1:使用全局内置eval()函数

eval()接收字符串参数,会直接将字符串作为JavaScript代码在当前作用域下执行:

const code = `res.send("Hi")`;
eval(code); // 直接执行res.send("Hi")逻辑

注意事项:eval()可以直接访问当前作用域内的所有变量、函数,安全风险极高。如果待执行的字符串代码来源不可信(比如来自用户输入、第三方返回内容),严禁使用该方法,否则极易引发代码注入、XSS等严重安全问题。

方法2:使用Function构造函数

Function构造函数会把传入的字符串参数作为函数体创建一个新函数,该函数运行在全局作用域,无法访问当前局部作用域的变量,相比eval()安全风险更低:

const code = `res.send("Hi")`;
// 创建函数后立即调用执行
new Function(code)();

如果需要给待执行的代码传递参数(比如示例中的res对象),可以在构造函数时提前声明形参,调用时传入对应实参即可:

const code = `res.send("Hi")`;
// 最后一个参数为函数体,前面的参数都是函数形参名
const exec = new Function('res', code);
// 传入实际的res对象后执行
exec(res);

通用注意事项

  • 所有动态执行字符串代码的逻辑都存在固有安全风险,除非你能100%确认待执行代码的来源完全可控可信,否则不建议在生产环境使用这类逻辑
  • 动态执行代码前建议先做语法校验,避免非法代码触发程序崩溃

内容的提问来源于stack exchange,提问作者Fat Fatty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 10:07:04