第 4 行的类型错误:回调不是函数 JavaScript 回调

我创建了一个 forEach 函数,它接受一个数组和一个回调函数,并在数组的每个元素上运行回调。forEach 函数不返回任何内容。还使用了一个单独的辅助函数映射。


function forEach(array, callback) {

  for (let i = 0; i < array.length; i++) {

    callback(array[i]);

  }

}


function map(array, callback) {

  let newArr = []

  forEach(array, newArr.push(callback));

  return newArr;

}


console.log(typeof forEach); // should log: 'function'

forEach(['a', 'b', 'c'], i => console.log(i)); // should log: 'a', 'b', 'c'

console.log(typeof map); // should log: 'function'

console.log(map([3, 4, 5], n => n - 2)); // should log: [1, 2, 3]


我收到以下错误:第 4 行的类型错误:回调不是一个函数 我非常接近解决问题,但似乎无法弄清楚如何使用 forEach 函数调用在第 9 行。上面的所有测试用例都通过了,除了最后一个。


蛊毒传说
浏览 76回答 3
3回答

梵蒂冈之花

将您的功能更改map为:function map(array, callback) {&nbsp; &nbsp;let newArr = []&nbsp; &nbsp;forEach(array, (value) => newArr.push(callback(value)));&nbsp; &nbsp;return newArr;}

尚方宝剑之说

问题出在forEach(array, newArr.push(callback));.&nbsp;尝试将第二个参数 , 包装newArr.push(callback)在箭头函数表达式中。结果行将是forEach(array, () => newArr.push(callback));.这是一个工作示例。查看控制台日志。祝你好运!

呼唤远方

您只需要编写return array.map(callback);它就可以了。由于Array.prototype.map()&nbsp;map接受callbackasparameter并且您已经具有callbackas 功能parameter。你需要做的就是return array.map(callback);。同样,您可以使用Array.prototype.forEach()。但forEach不返回任何东西,所以你不能写return array.forEach(callback);。取而代之的是,您需要将其用作array.forEach(callback);.function forEach(array, callback) {&nbsp; array.forEach(callback);}function map(array, callback) {&nbsp; return array.map(callback);}console.log(typeof forEach); // should log: 'function'forEach(['a', 'b', 'c'], i => console.log(i)); // should log: 'a', 'b', 'c'console.log(typeof map); // should log: 'function'console.log(map([3, 4, 5], n => n - 2)); // should log: [1, 2, 3]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript