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

如何在JavaScript中以字符串形式执行脚本?含Emscripten场景示例

在JavaScript中以字符串形式执行脚本的可行性及实现方法

这种实现方式是可行的,JavaScript原生提供了多种执行字符串形式脚本的能力,下面结合你的Emscripten场景给出具体实现方案:

实现方案

1. 使用eval()函数

eval()可以直接解析并执行字符串形式的JavaScript代码,适配你的场景的修改示例如下:

// core.jslib
mergeInto(LibraryManager.library, {
  myCallback: function (str, arg) {
    // 将字符串函数表达式转为可执行的函数对象
    const execFunc = eval(`(${str})`);
    // 转换Emscripten传入的C字符串为JS字符串后执行函数
    execFunc(UTF8ToString(arg));
  }
});

2. 使用new Function()构造函数

这种方式相比eval()有更好的作用域隔离性,安全性略高,实现示例:

// core.jslib
mergeInto(LibraryManager.library, {
  myCallback: function (str, arg) {
    // 通过构造函数获取字符串对应的函数
    const execFunc = new Function('return ' + str)();
    execFunc(UTF8ToString(arg));
  }
});

注意事项

  • 安全风险:如果执行的字符串脚本来自不可信的外部输入,极易引发代码注入或XSS攻击,必须确保脚本来源完全可靠。
  • Emscripten字符串处理:从C层传入的arg是UTF8编码的指针,必须通过UTF8ToString()转换为JavaScript字符串后再传递给目标函数。
  • 函数格式兼容:你传入的script是函数表达式字符串,需要通过括号包裹(eval方式)或借助new Function返回函数对象,才能正确被解析为可执行的函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 18:09:18