Skip to content

高阶函数 (Higher-Order Functions)

高阶函数有两个特征:

  • 接受一个或多个函数作为参数。
  • 返回一个函数。

这种能力使函数更可组合、可复用,并能抽象出通用控制流或行为。

示例:接受函数作为参数

下面实现了一个简单的 filter,它接受数组和判定函数:

js
function filter(array, fn) {
	let results = [];
	for (let i = 0; i < array.length; i++) {
		if (fn(array[i])) {
			results.push(array[i]);
		}
	}
	return results;
}

const isEven = n => n % 2 === 0;
console.log(filter([1, 2, 3, 4, 5], isEven)); // [2, 4]

示例:返回函数

返回函数可以用来部分应用或生成特定行为的函数:

js
function createAdder(x) {
	return function(y) {
		return x + y;
	};
}

const add5 = createAdder(5);
console.log(add5(10)); // 15

实际应用:只执行一次的包装器 once

高阶函数也常用于控制函数执行次数、缓存结果等:

js
function once(fn) {
	let done = false;
	return function() {
		if (!done) {
			done = true;
			return fn.apply(this, arguments);
		}
	};
}

const initialize = once(() => {
	console.log('初始化完成!(只应该打印一次)');
});

initialize();
initialize();

小结

  • 高阶函数是函数式编程的基础,用来抽象行为、实现组合和复用。
  • 常见模式包括 map/filter/reduce、柯里化、函数装饰器(decorator)等。

MIT Licensed | Keep Learning.