繁体   English   中英

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

[英]Type Error on line 4: callback is not a function JavaScript callback

我创建了一个 forEach function,它接受一个数组和一个回调 function,并对数组的每个元素运行回调。 forEach function 不返回任何内容。 还有一个单独的助手 function map 被使用。

 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 行的类型错误:回调不是 function我非常接近解决问题,但似乎无法弄清楚如何使用 forEach function 调用在第 9 行。 上面的所有测试用例都通过了,除了最后一个。

将您的map function 更改为:

function map(array, callback) {
   let newArr = []
   forEach(array, (value) => newArr.push(callback(value)));
   return newArr;
}

问题在于forEach(array, newArr.push(callback)); . 尝试将第二个参数newArr.push(callback)包装在箭头 function 表达式中。 结果行将是forEach(array, () => newArr.push(callback)); .

这是一个工作示例 查看控制台日志。

祝你好运!

你只需要写return array.map(callback); 它会起作用。

由于Array.prototype.map() map接受callback作为parameter ,并且您已经将callback function 作为parameter 您需要做的就是return array.map(callback); .

同样,您可以使用Array.prototype.forEach() 但是forEach不返回任何东西,所以你不能写return array.forEach(callback); . 取而代之的是,您需要将其用作array.forEach(callback); .

 function forEach(array, callback) { array.forEach(callback); } function map(array, callback) { 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]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM