「這是我參與2022首次更文挑戰(zhàn)的第33天置森,活動詳情查看:2022首次更文挑戰(zhàn)」
寫在前頭
大多數(shù)小伙伴看技術(shù)書籍都會用“啃”來描述讀書的直觀感受,當(dāng)然我也是一個前端小白符糊,白的透明那種凫海,但是我在讀技術(shù)書籍感覺到“啃”的時候,我希望把我啃紅寶書第四版的過程的想法男娄,總結(jié)帶給大家行贪,以供后來者能夠更快上手。
注: 本文由于作者水平原因模闲,如有錯誤之處建瘫,懇請大家指正,另外隨著學(xué)習(xí)的深入,體會的加深尸折,我會不斷回來更新啰脚,修改這類文章。
思維導(dǎo)圖
簡述
函數(shù)這一章其實在有一定的編程基礎(chǔ)实夹,比如學(xué)過一點c語言就很好讀下去橄浓。整體還是易讀板塊。
10.3理解參數(shù)
-
與其他語言的參數(shù)的不同
參數(shù)真實傳入個數(shù)和定義函數(shù)時要接受的個數(shù)不一定要嚴(yán)格一樣亮航。
-
原因
傳入的參數(shù)是以一個數(shù)組方式來存儲的荸实,不在乎這個“數(shù)組”里面是否是空或者是元素“溢出”。并且根本不存在驗證命名參數(shù)的機制缴淋。
arguments對象
①怎么訪問
使用 function 關(guān)鍵字定義(非箭頭)函數(shù)時准给,可以在函數(shù)內(nèi)部訪問 arguments 對象,從中取得傳進(jìn)來的每個參數(shù)值宴猾。
②是什么
arguments 對象是:
一個類數(shù)組對像圆存。
一個可迭代對象。
③length屬性
arguments像數(shù)組一樣有l(wèi)ength屬性仇哆,可以用來檢測arguments里面有多少個參數(shù)沦辙。
④和命名參數(shù)一起使用
function doAdd(num1, num2) {
if (arguments.length === 1) {
console.log(num1 + 10);
} else if (arguments.length === 2) {
console.log(arguments[0] + num2);
}
}
⑤與命名參數(shù)值同步
可以使用類似數(shù)組的操作方式將參數(shù)賦值。
function doAdd(num1, num2) {
arguments[1] = 10;
console.log(arguments[0] + num2);
}
- 參數(shù)怎么寫
①不同
ECMAScript 函數(shù)的參數(shù)只是為了方便才寫出來的讹剔,并不是必須寫出來的油讯。
在ECMAScript 中的命名參數(shù)不會創(chuàng)建讓之后的調(diào)用必須匹配的函數(shù)簽名详民。
②原因
根本不存在驗證命名參數(shù)的機制。
- arguments對象與命名參數(shù)
①使用
arguments 對象可以跟命名參數(shù)一起使用陌兑,參數(shù)就是arguments“數(shù)組”里面的每一個元素的“名字”沈跨。可以一起使用兔综。
②值同步
就把arguments看做一個數(shù)組饿凛,那么第一個參數(shù)對應(yīng)arguments[0]。2個的值一直一樣软驰。
③嚴(yán)格模式
無法可以使用類似數(shù)組的操作方式將參數(shù)賦值涧窒。就是參數(shù)傳入時是什么值,就無法后面改變锭亏。
④命名參數(shù)未傳入
對于命名參數(shù)而言纠吴,如果調(diào)用函數(shù)時沒有傳這個參數(shù),那么它的值就是 undefined慧瘤。
- 箭頭函數(shù)中的參數(shù)
①不使用arguments對象
參數(shù)將不能使用 arguments 關(guān)鍵字訪問戴已,而只能通過定義的命名參數(shù)訪問。
②包裝函數(shù)
在一個包裝函數(shù)中創(chuàng)建一個箭頭函數(shù)锅减,可以在箭頭函數(shù)里面使用這個包裝函數(shù)的arguments對象糖儡。