【发布时间】:2019-03-30 20:49:40
【问题描述】:
我有以下问题:
我的每个人
编写一个接受数组和回调函数的函数 myForEach。 myForEach 的行为应该尽可能地反映本机 .forEach() 数组方法的功能。
下面是代码:
let sum = 0;
function addToSum(num) {
sum += num;
}
let nums = [10, 20, 30];
function myForEach(anArray, callback){
for (let i=0; i<anArray.length; i++){
let num = anArray[i];
//console.log(num)
// I don't understand what this line of code is doing...
callback(num, i, anArray);
}
return undefined
}
myForEach(nums, addToSum);
console.log(sum); // 6
上面的代码可以解决这个高阶函数问题,但我不明白为什么。具体来说,下面这行代码是什么意思:
callback(num, i, anArray);
为什么有 3 个参数?这些论点在哪里传递?
【问题讨论】:
-
callback是对addToSum的引用,它只使用第一个参数num并忽略接下来的两个传递。 -
这只是为了完全镜像原生的
forEach方法。回调接受 3 个参数,与此处相同:元素、其索引和数组本身:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… -
顺便说一句,不确定这是否是“作弊”,但使用
function myForEach (anArray, callback, thisArg) { anArray.forEach(callback, thisArg); }会不会容易得多?
标签: javascript arrays function callback