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

JavaScript中能否将参数数组直接传入Function()构造函数?

解决方案:用展开运算符或apply传递参数数组给Function构造函数
  • 使用ES6展开运算符(推荐)
    直接用...运算符把参数数组展开,作为Function构造函数的前序参数,最后跟上函数体即可,完全符合你要的单一声明方式:
    示例JSON:

    {
      "arguments": ["in1", "in2", "in3"],
      "body": "return in1 + in2 + in3;"
    }
    

    对应的代码:

    var f = new Function(...json.arguments, json.body);
    // 调用示例
    console.log(f(1, 2, 3)); // 输出6
    
  • 兼容旧环境的方案(无需ES6)
    如果运行环境不支持ES6语法,可以用Function.apply()实现,它允许以数组形式传递构造函数的参数:

    var f = Function.apply(null, json.arguments.concat(json.body));
    // 调用示例
    console.log(f(1, 2, 3)); // 输出6
    

    这里通过concat把函数体拼接到参数数组末尾,形成包含所有参数名和函数体的数组,apply会自动将数组元素逐个传入Function构造函数。

本质上Function构造函数本身就支持接收任意数量的字符串参数——前N个是参数名,最后一个是函数体。不管是逐个传参还是用数组展开,都是把参数名字符串依次传入,完全能满足你扩展多参数支持的需求,同时保持函数的单一声明形式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:35:26