一文搞懂JavaScript高阶函数
1. 什么是高阶函数
维基百科对于 高阶函数 的定义:
在数学和计算机科学中,高阶函数是至少满足下列一个条件的函数:
接受一个或多个函数作为输入
输出一个函数
String
类型,123 是否是
Number
类型等等,你可能会想到这样封装这个函数:
function isType(type, val) {
return Object.prototype.toString.call(val) === `[object ${type}]`
}
isType('String', 'a') // true
isType('String', 'b') // true
isType('String', '0') // true
isType('String', 123) // false
const createIsType = type => {
// 将type这个变量保存在了这个代码块中,不会被销毁
return val => Object.prototype.toString.call(val) === `[object ${type}]`
}
const isString = createIsType('String')
const isNumber = createIsType('Number')
isString('hello') // true 等同于createIsType('String')('hello')
isNumber(111) // true 等同于createIsType('Number')(111)
那么这个 createIsType 函数就是一个高阶函数,因为他的返回值是一个函数
平常我们已经用到的很多函数都高阶函数,例如sort、map、forEach、filter、some、every、reduce 和 reduceRight ,这个函数都是 JavaScript 语言已经提供给我们使用的函数,后面我会带大家手动实现这些高阶函数,可以看文后的相关文章链接
我们想一想就知道,高阶函数就是对普通函数的进一步抽象,是对业务的进一步提炼,平常工作中很多地方都可以用到高阶函数的,还有很多比如:函数的柯理化,ajax的成功的回调函数,面向切面编程等
▼ 相关文章 ▼