使用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
相关产品推荐
相关产品推荐

