高階函數(shù)的英文叫做higher-order function谢翎。那么什么是高階函數(shù)瞄摊?
JavaScript的函數(shù)其實都指向某個變量。既然變量可以指向函數(shù),函數(shù)的參數(shù)能接收變量,那么一個函數(shù)就可以接收另一個函數(shù)作為參數(shù)败潦,這種函數(shù)就稱之為高階函數(shù)。
一個最簡單的高階函數(shù):
function add(x, y, f) {
return f(x) + f(y);
}
當我們調用add(-5, 6, Math.abs)時朋其,參數(shù)x, y和f分別接收-5, 6和函數(shù)Math.abs澄阳,根據(jù)函數(shù)定義,我們可以推導計算過程為:
x = -5;
y = 6;
f = Math.abs;
f(x) + f(y) ==> Math.abs(-5) + Math.abs(6) ==> 11;
return 11;
用代碼驗證一下:
add(-5, 6, Math.abs); // 11
編寫高階函數(shù)坞笙,就是讓函數(shù)的參數(shù)能夠接收別的函數(shù)岩饼。