高階函數就是輸入參數中有函數,或者返回值是函數的函數。
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 函數