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

如何从WebhookScript全局变量中获取并调用函数

解决WebhookScript中全局存储函数后无法调用的问题

问题原因

当你把函数存入全局变量$sub$时,WebhookScript会将函数序列化为字符串存储。后续用var('$sub$')取出的是字符串类型,而非可执行的函数对象,所以直接调用会报Trying to invoke a non-function 'string'错误。

解决方案

根据全局变量存储的内容类型,选择以下两种方法将字符串转回可执行函数:

1. 存储函数体时用Function构造函数

如果全局变量$sub$仅存储函数体(比如"return a - b"),可以通过Function构造函数创建新函数:

// 从全局变量取出函数体字符串
const funcBody = var('$sub$');
// 构造函数,指定参数和函数体
const sub = new Function('a', 'b', funcBody);
// 调用函数
const subX = sub(1, 2); // 返回-1

2. 存储完整函数时用eval转换

如果全局变量$sub$存储的是完整的函数定义字符串(比如"function(a, b) { return a - b }"),可以用eval将字符串转为函数对象:

// 从全局变量取出完整函数字符串
const funcStr = var('$sub$');
// 转换为函数
const sub = eval(funcStr);
// 调用函数
const subX = sub(1, 2); // 返回-1

注意事项

  • 使用eval时要确保全局变量的内容是可信的,避免注入恶意代码。
  • 优先推荐Function构造函数的方式,比eval更安全,也更清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 06:30:47