定义
一个函数的参数是函数,那么这个函数就是高阶函数。数组的遍历方法就是高阶函数,如:forEach
、map
等等。
细节
- 保持纯函数,减少函数副作用;
- 回调函数要使用
call
或apply
绑定this
;
手写数组函数
forEach
function myForEach(arr, cb) {
for (let i = 0; i < arr.length; i++) {
cb.call(arr, arr[i], i, arr);
}
}
map
function myMap(arr, cb) {
const result = [];
for (let i = 0; i < arr.length; i++) {
result.push(cb.call(arr, arr[i], i, arr));
}
return result;
}
reduce
function myReduce(arr, cb, init) {
let result = arr[0];
let i = 1;
if (init) {
i = 0;
result = init;
}
for (; i < arr.length; i++) {
result = cb.call(arr, result, arr[i], i, arr);
}
return result;
}