JavaScript-高阶函数

79 阅读1分钟

高阶函数

高阶函数就是输入参数中有函数,或者返回值是函数的函数。

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