「這是我參與2022首次更文挑戰(zhàn)的第34天,活動詳情查看:2022首次更文挑戰(zhàn)」
寫在前頭
大多數(shù)小伙伴看技術(shù)書籍都會用“啃”來描述讀書的直觀感受惹恃,當然我也是一個前端小白乘瓤,白的透明那種屋休,但是我在讀技術(shù)書籍感覺到“啃”的時候,我希望把我啃紅寶書第四版的過程的想法,總結(jié)帶給大家挠蛉,以供后來者能夠更快上手。
注: 本文由于作者水平原因断傲,如有錯誤之處脱吱,懇請大家指正,另外隨著學(xué)習(xí)的深入村斟,體會的加深蝙斜,我會不斷回來更新,修改這類文章汇陆。
思維導(dǎo)圖
簡述
函數(shù)這一章其實在有一定的編程基礎(chǔ)垦垂,比如學(xué)過一點c語言就很好讀下去宦搬。整體還是易讀板塊。
10.4沒有重載
- 原因
簽名:參數(shù)個數(shù)劫拗,類型
①其他語言中床三,函數(shù)可以定義多個,只要函數(shù)名一樣杨幼,但是參數(shù)個數(shù)撇簿,類型不一樣,也不會報錯差购。
②js中函數(shù)沒有簽名四瘫,因為參數(shù)是一個“數(shù)組”。函數(shù)名當成指針
- 函數(shù)覆蓋
ECMAScript 中聲明了兩個同名的函數(shù)定義欲逃,則后定義的會覆蓋先定義的找蜜。
- 模擬函數(shù)重載
函數(shù)定義會覆蓋之前的,以最后的函數(shù)定義為準稳析。
10.5默認參數(shù)值
- 檢測某個參數(shù)是否等于undefined
es5.1之前使用這種方式來檢測是否該賦值洗做。
之前知道函數(shù)參數(shù)沒有傳入是默認undefined。檢測這個參數(shù)是undefined的時候彰居,就可以給他賦值一個默認值诚纸。
*顯示定義默認參數(shù)
es6之后使用。在函數(shù)()里面的參數(shù)后面直接賦值陈惰,當調(diào)用函數(shù)的時候畦徘,如果沒有傳入這個參數(shù),那么就會給這個參數(shù)賦值默認值抬闯。
- 參數(shù)傳undefined
給參數(shù)傳undefined和沒傳實際上這個參數(shù)都會被賦值為默認值井辆,但是賦值undefined,可以利用多個獨立的默認值溶握。
- 默認參數(shù)值的使用
① arguments對象不反映參數(shù)默認值
使用[]這樣的用法杯缺,無法反映出默認值。
② 修改命名參數(shù)不會影響arguments對象
修改命名參數(shù)也不會影響 arguments 對象睡榆,它始終以調(diào)用函數(shù)時傳入的值為準
③ 不限于原始值或?qū)ο箢愋推妓粒{(diào)用函數(shù)返回的值
默認值也可以是函數(shù)返回值袍榆。
注意:調(diào)用時間點
函數(shù)的默認參數(shù)只有在函數(shù)被調(diào)用時才會求值,不會在函數(shù)定義時求值匾鸥。而且蜡塌,計算默認值的函數(shù)只
有在調(diào)用函數(shù)但未傳相應(yīng)參數(shù)時才會被調(diào)用。
⑤ 箭頭函數(shù)
也支持使用默認值勿负,但是當只有一個函數(shù)的時候必須使用()馏艾。和之前寫的一樣。
- 默認參數(shù)作用域與暫時性死區(qū)
① 類似let關(guān)鍵字順序聲明變量一樣
② 引用
參數(shù)初始化是按參數(shù)書寫是順序依次開始的奴愉,所以琅摩,前面的“老人”參數(shù),可以被賦值后面的“新生兒”參數(shù)锭硼。
- 引用參數(shù)
前面的參數(shù)不可以引用后面的參數(shù)房资,后面的參數(shù)可以引用前面的參數(shù)。
- 引用函數(shù)體內(nèi)的變量
參數(shù)有自己的作用域檀头,函數(shù)有自己的作用域轰异,參數(shù)不可以引用函數(shù)的作用域。比如函數(shù)作用域里面的變量就不可以被拿來做默認值暑始。