高阶函数就是输入参数中有函数,或者返回值是函数的函数。
1.函数作为参数
如果大家使用过setTimeout、setInterval和AJAX请求,那么大家已经用过高阶函数了,这也是我们最常看到的场景:**回调函数**,它将函数作为参数传递给另一个函数。例如AJAX请求中,我们会用回调函数来处理请求成功或者失败后的一些逻辑:
$.ajax('/api/request/tabledata', function(res) {
console.log('请求成功!');
})
在Array、Object等基本对象的原型上有很多API,接收回调函数来进行一些逻辑操作。这里说一个很常用的ES6方法filter,此方法返回一个新数组,由回调函数执行后返回true或者为真的元素组成。
const arr = [21, 3, 6, 8, 19];
const newArr = arr.filter(function(item) {
return item > 6;
})
console.log(newArr); // [21, 8, 19]
2.函数作为返回值
另一个经常看到的高阶函数的场景是:一个函数内部返回另一个函数,比如:
function bar() {
return function() {}
}
主要是利用闭包来保持作用域:
function add() {
var number = 0;
return function(x) {
return number += x;
}
}
var newAdd = add();
newAdd(1); // 1
newAdd(2); // 3
欢迎大家一起讨论~~
如果有对前端感兴趣的小伙伴,可以关注并私信我,会经常更新一些知识点,也可以找我要一些视频或者电子书资料~~
最后,请各位小伙伴帮忙投下票,让我知道你们从事前端开发多久了呢。非常感谢
閱讀更多 大前端雜記 的文章
關鍵字: JavaScript 高阶 函数