本文主要是介绍Javascript中的高阶函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
其实高阶函数
(Higher-Order Function)并不是什么神秘的概念,在开发中我们已经经常在用,高阶函数的概念是这样的:函数可以作为参数被传递,或者函数可以作为返回值输出这样的一个函数就叫高阶函数,这也是为什么在JavaScript中函数被称为一等公民
的原因,可能概念不太好理解,我们接着往下看:
1、map, forEach,reduce,filter,sort 等数组的操作方法,都是高阶函数
function minusOne(num) {return num - 1;
}
const oldArray = [1, 2, 3, 4, 5];
const newArray = oldArray.map(minusOne);
newArray; // [0, 1, 2, 3, 4]
上面例子实现了使用map函数对原数组的元素遍历依次减一的操作,map函数的参数是一个函数,这就符合了高阶函数的定义–函数作为参数被传递
2、利用高阶函数可以返回函数的特性,我们可以写出更有效率的、更灵活的方法
function addPrefix(prefix) {return function (value) {return prefix + value}
}
const addCity = addPrefix('Beijing')
const addRoad = addPrefix('Huanghe');
console.log(addCity('City'));// BeijingCity
console.log(addRoad('Road')); // HuangheRoad
addPrefix函数可以作为一个工具函数,通过传入不同的前缀,返回一个不同的功能函数
3、高阶函数可以缓存本地状态
function higherOrderFunction(options) {const state = { ...options } // 本地状态对象return function (...args) {return function (callback) {return callback(state, ...args)}}}const prepare = higherOrderFunction({name: 'bobby',sex: 'man',})const prepareWithArgs = prepare({ country: 'United States' })const finalize = prepareWithArgs((state, options) => ({ ...state, ...options }))console.log(finalize)
这篇关于Javascript中的高阶函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!