面试题答案
一键面试JavaScript高阶函数在常见应用场景中的作用
- 事件处理:高阶函数可用于创建事件处理函数。例如,
addEventListener
的第二个参数可以是通过高阶函数生成的函数。这样可以将特定逻辑封装在高阶函数内部,然后返回针对不同元素或场景定制的事件处理函数。比如可以创建一个高阶函数,它接受一个特定的操作逻辑,返回一个事件处理函数,当事件触发时执行该逻辑。这使得代码更具模块化和可维护性,不同元素的相似事件处理逻辑可以复用高阶函数生成的处理函数。 - 数组操作:JavaScript 提供了许多数组方法,如
map
、filter
、reduce
等,它们都是高阶函数。map
可以对数组中的每个元素应用一个函数,并返回一个新数组,新数组的元素是原数组元素经过函数处理后的结果,用于数组的转换;filter
用于根据传入的函数条件过滤数组元素,返回符合条件的元素组成的新数组;reduce
则可以对数组元素进行累加等操作,通过传入的函数将数组元素逐步处理为一个值。这些高阶函数大大简化了数组操作的代码,提高了代码的可读性和功能性。
实现高阶函数
function higherOrderFunction(func, arr) {
return function() {
let newArr = [];
for (let i = 0; i < arr.length; i++) {
newArr.push(func(arr[i]));
}
return newArr;
};
}
// 使用示例
let arr = [1, 2, 3, 4];
let multiplyByTwo = function(num) {
return num * 2;
};
let resultFunction = higherOrderFunction(multiplyByTwo, arr);
let result = resultFunction();
console.log(result);
在上述代码中,higherOrderFunction
接受一个函数 func
和一个数组 arr
作为参数,返回一个内部函数。这个内部函数形成了闭包,因为它可以访问外部函数 higherOrderFunction
的变量 func
和 arr
。当调用返回的函数时,会遍历数组 arr
,将每个元素应用 func
函数,并返回处理后的新数组,这样可以在一定程度上优化性能,避免每次都重新传入函数和数组进行操作。