高階函式一開始看三明治看很久看不懂,直到在網路上看到一篇以食譜來說明的文章,終於懂了,來筆記一下吧!
特性
(First-Class Function)函式
(High Order Function)因為JavaScript具一級函式特性,高階函式指的是可以接受另一個函式作為變數,或者以一個函式當結果輸出的函式
以食譜來說,就拿簡單的海綿蛋糕當例子,先提醒大家,我有把步驟簡化,如果引起大家的亨飪魂,想做個蛋糕,要記得去看參考資料嘿!跟著我的步驟做新手可能會失敗喔XD每一道步驟都是一個函式,而內含專有名詞如紅色字樣的步驟,就是高階函式。當初學者看不懂那些專有名詞時,就得去查找其定義,換句話說,每個專有名詞就是一個函式,如步驟下方以打發
為例的說明。
海綿蛋糕
料理步驟:
1 模型塗奶油,撒一層麵粉。
2 先將無鹽奶油20g融化,放涼,但不凝固;低筋麵粉120g秤好備用。
3 在無油無水的打蛋盆中裝入120g細白砂糖、1.5g(約1/3小匙)的鹽、200g全蛋,馬上拌勻。
4 將蛋液隔水加熱
至38~43℃,須持續攪拌。
5 溫度到了之後,離火,電動攪拌器開高速,將蛋液打發
。
7 電動攪拌器開到最低速,或直接手動攪拌1分鐘,趕走大氣泡。
9 低筋麵粉過篩
加入蛋糊,用切拌的方式拌勻,直到看不見乾麵粉。
10 倒入1/3麵糊至冷卻的融化奶油中,拌勻。
11 再加入20g牛奶、1小匙香草精至與奶油混合的麵糊中拌勻。
12 將混合奶油和牛奶的麵糊倒回大盆子中,用切拌的方式拌勻。
13 倒入塗油灑粉的模型中,烘烤。烤箱==預熱==溫度180℃,麵糊放入後,0/180℃烤15分鐘,邊緣凸起中間下陷時,180/180℃再烤15分鐘。
14 出爐後,立刻倒扣或脫模,完成。
打發:材料經過攪打,結構展開後包裹住氣泡的過程。
概念看完後,我們將高階函式分為以下兩者來介紹
const numbers = [1, 2, 3, 4, 5];
numbers.forEach(number => {
console.log(number);
});
//1
//2
//3
//4
//5
function multiplier(factor) {
// 返回這個函數,這個函數將接受一個參數並返回與 factor 相乘的结果
return function(number) {
return number * factor;
};
}
// 創建一個乘以 2 的函數
const double = multiplier(2);
// 創建一個乘以 3 的函數
const triple = multiplier(3);
// 使用這些函數
console.log(double(5)); // 輸出 10
console.log(triple(5)); // 輸出 15
我的理解就是當我們知道的字詞越來越多後,講出來的話就會比較簡短,也就被視為比較高階的語言,而在函式中包另一個函式,就類似這樣的情況,所以稱作高階函式。像跟小孩講話時,有時穿插了一些平常比較沒用過的語言,比如:我明天要去做亨飪喔!孩子會問亨飪是什麼?那麼我講的這句話對他們來說就是比較高階的語言,因為他們沒有聽過那個詞,如此而已!
努力看完天書後,來點輕鬆的吧!分享我兒子的童言童語,調劑身心一下
2022/01/10
昨晚9點多⋯
咖:媽媽,我要開店囉!
我:這麼晚沒有客人啦!快去睡覺!
咖:我開的是7-11啊!