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

使用Function()构造器实现闭包时返回undefined如何解决

问题原因
  • 使用new Function创建函数时,最后一个入参为函数的执行体代码,JavaScript 函数默认在没有显式return语句时返回undefined。你当前的函数体仅完成了a 运算符 b的表达式计算,没有将计算结果返回,因此调用函数后拿到的结果都是undefined。
  • 补充:你代码中的变量名myFanction为拼写笔误,不过该问题不影响代码正常运行,仅属于不规范写法。
修复方案

在函数体代码前拼接return关键字,将运算结果返回即可,修复后的完整代码如下:

function simpleOperations(operation) {
    // 新增return关键字返回运算结果,同时修正变量名拼写
    let myFunction = new Function('a', 'b', 'return a ' + operation + ' b');
    return myFunction
}

let sum = simpleOperations("+")
let multiplicate = simpleOperations("*")

console.log("your sum is: " + sum(3,7));
console.log("your product is: " + multiplicate(3,7));

运行后即可输出预期结果:

your sum is: 10
your product is: 21

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:24:01