「這是我參與2022首次更文挑戰(zhàn)的第34天蠕搜,活動詳情查看:2022首次更文挑戰(zhàn)」
寫在前頭
大多數(shù)小伙伴看技術(shù)書籍都會用“啃”來描述讀書的直觀感受,當(dāng)然我也是一個前端小白寇漫,白的透明那種,但是我在讀技術(shù)書籍感覺到“啃”的時候谐鼎,我希望把我啃紅寶書第四版的過程的想法佛致,總結(jié)帶給大家,以供后來者能夠更快上手惜浅。
注: 本文由于作者水平原因,如有錯誤之處伏嗜,懇請大家指正,另外隨著學(xué)習(xí)的深入坛悉,體會的加深,我會不斷回來更新承绸,修改這類文章裸影。
思維導(dǎo)圖
簡述
函數(shù)這一章其實在有一定的編程基礎(chǔ),比如學(xué)過一點c語言就很好讀下去军熏。整體還是易讀板塊轩猩。
10.6參數(shù)擴展與收集
10.6.1擴展參數(shù)
-
累加
迭代arguments對象
let values = [1, 2, 3, 4]; function getSum() { return Array.from(arguments).reduce((pre, cur) => pre + cur, 0); }
②apply()
console.log(getSum.apply(null, values)); // 10
③擴展操作符
使用擴展操作符可以把數(shù)組逐個元素傳入函數(shù)。將可迭代對象拆分。將迭代拆分的返回值單獨輸入均践。
擴展操作符是“...”
let values = [1, 2, 3, 4]; console.log(getSum(...values)); // 10
使用擴展操作符時候晤锹,依然可以和其他參數(shù)混合使用。前后都可以添加參數(shù)彤委。
let values = [1, 2, 3, 4]; console.log(getSum(-1,...values, 2)); // 11
還可以使用多個擴展符
let values = [1, 2, 3, 4]; console.log(getSum(...values, ...[5,6,7])); // 28
arguments對象與擴展操作符
arguments對象不知道是否使用了擴展操作符鞭铆,但是他只會老老實實地把使用擴展符傳入的參數(shù)依次保存到“數(shù)組”。
- 命名參數(shù)
在普通函數(shù)焦影,箭頭函數(shù)中可以使用擴展操作符用于命名參數(shù)车遂,和默認(rèn)參數(shù)結(jié)合使用。
let values = [1, 2, 3, 4];
function countArguments() {
console.log(arguments.length);
}
countArguments(-1, ...values); // 5
countArguments(...values, 5); // 5
countArguments(-1, ...values, 5); // 6
countArguments(...values, ...[5, 6, 7]); // 7
10.6.2收集參數(shù)
- 使用擴展操作符傳參
在構(gòu)思函數(shù)定義時斯辰,可以使用擴展操作符把不同長度的獨立參數(shù)組合為一個數(shù)組艰额。類似arguments 對象的構(gòu)造機制,只收集參數(shù)會得到一個 Array 實例椒涯。
-
收集參數(shù)前面有命名參數(shù)
必須把擴展操作符放在末尾。
-
箭頭函數(shù)
①不支持 arguments 對象
②支持收集參數(shù)的定義方式
-
arguments對象與收集參數(shù)
2者并沒有什么直接關(guān)系回梧,不會感染arguments對象存入傳入的參數(shù)废岂。
使用收集參數(shù)并不影響 arguments 對象,它仍然反映調(diào)用時傳給函數(shù)的參數(shù)