![](/img/trans.png)
[英]JavaScript setTimeout(): Type Error on line callback is not a function at blob: callback is not a function
[英]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.