为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript:调用添加函数返回新数组的高阶函数;错误:输出数组中的“NaN”元素

JavaScript:调用添加函数返回新数组的高阶函数;错误:输出数组中的“NaN”元素

三国纷争 2021-06-16 17:24:04
我有一个“有时”的函数,想从中返回一个函数对象。下面是我的代码:let add = (a, b) => {    return a + b;  };myFunc = sometimes(add);const outputArr = [];    for (let i = 0; i < 3; i++) {      outputArr.push(myFunc(2 + i, 3 + i));    }function sometimes (inputFunc){  return function (a, b){    return inputFunc()  }}outputArr 我希望我的 outputArr 变量等于:[5, 7, 9]相反,我的等于: [ NaN, NaN, NaN ]我究竟做错了什么?
查看完整描述

1 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

您没有将参数传递给包装的函数。该add函数尝试对两个undefined值求和,结果为NaN(不是数字)。


您必须将参数传递给包装函数:


 return function(a, b) {

    return inputFunc(a, b); // <<<

 }

由于sometimes是高阶函数,需要包装不同的函数,参数数量不断变化,无法知道被包装函数的实现。为确保这一点,您应该使用剩余参数(将参数收集到数组)和传播(将数组转换回参数)将参数传递给包装函数。


let add = (a, b) => {

  return a + b;

};


myFunc = sometimes(add);


const outputArr = [];


for (let i = 0; i < 3; i++) {

  outputArr.push(myFunc(2 + i, 3 + i));

}


function sometimes(inputFunc) {

  return function(...args) {

    return inputFunc(...args)

  }

}


console.log(outputArr);


查看完整回答
反对 回复 2021-06-18
  • 1 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信