Head First Javascript 程式設計讀書筆記(三)
函式來啦!
當你要編寫一下反覆使用的程式碼時就應該考慮寫函式。函式到底是怎麼回事呢?來個例子:
function plus ( a, b ) {
var c = a + b;
return c;
}
var d = plus ( 1, 5 );
console.log( d ); // 6
function關鍵字是定義函式必須的,plus是函式名,遵循變數名的命名規則,括號裡的a和b是引數,稱為形參,形參是可選的,{ }之內的程式碼成為函式體,其中return是返回語句,return語句是可選的。
plus ( 1, 5 )實現函式呼叫,函式在宣告時不會執行,只有在呼叫時才會執行。
呼叫時傳給函式的引數稱為實參。和形參一樣,實參也是可選的。呼叫函式後函式的執行過程是先按順序把實參賦值給形參,然後執行函式體的程式碼。函式執行完畢,程式將返回撥用函式的地方繼續往後執行。
可以把任何型別的值作為實參傳遞給函式,但更常見的是把變數作為實參傳遞。
Javascript函式引數的傳遞是值傳遞,基本型別直接複製值(物件型別複製引用值,以後的內容)。
var n = 10,;
function fn ( a ) {
a=30;
}
fn ( n );
console.log( n ); //10
//n還是10,因為呼叫的時候只是複製了n的值(10)給函式fn的引數a,就算修改了這個值,也不會影響n的值。
如果呼叫函式時引數傳遞錯誤,則少傳遞的實參對應的形參會被賦值為undefined,多傳遞的值預設會被忽略(當然有辦法捕獲這些值,只是這一章沒說~)。
函式體中遇到return語句,函式會直接返回return語句中的值(如果return語句沒有指定值(空的),則返回undefined)並停止函式執行,哪怕return語句之後還有語句。如果一個函式沒有return語句,則它的返回值是undefined。
function fn ( ){
return 10;
console.log ('永遠不會見到我');
}
var a=fn( );
console.log( a ); //10
在函式中宣告的變數叫區域性變數,這樣的變數只在函式中可見,也只能用在函式中(區域性作用域),函式返回,區域性變數也就消失了,也就是說區域性變數的生命週期等同於函式的宣告週期。(閉包可以延長函式的生命週期,這是後面的內容)
在函式中使用沒有宣告的變數,會靜默的建立全域性變數(嚴格模式下會返回錯誤,這本書沒有講嚴格模式),千萬別這麼做。、
全域性變數就是在整個程式中隨處可用的變數,除非被遮蔽,也就是說區域性變數使用了與全域性變數相同的變數名,那麼在這個區域性作用域中,全域性變數是不可見的。
在一個網頁中只有一個全域性作用域,也就是說不同的js檔案共享同一個全域性作用域,因此應該儘量減少使用全域性作用域。
函式宣告可以放在網頁的任何位置,甚至在呼叫它之後,因為函式宣告會被提升。
本章最後給出了一些編碼建議: 1)在程式開頭宣告全域性變數。 2)把函式宣告放在一塊兒,無論是開頭或者結尾。 3)在函式開頭宣告區域性變數。
相關文章
- Head First Javascript 程式設計讀書筆記(一)JavaScript程式設計筆記
- Head First Javascript 程式設計讀書筆記(二)JavaScript程式設計筆記
- Head First Javascript 程式設計讀書筆記(四)JavaScript程式設計筆記
- Head First設計模式讀書筆記設計模式筆記
- head first java讀書筆記Java筆記
- Head First jQuery讀書筆記jQuery筆記
- 《Head First C 中文版》審讀筆記(三)筆記
- 《Head First HTML 與 CSS》讀書筆記之CSS篇HTMLCSS筆記
- 《JavaScript程式設計精解》--讀書筆記JavaScript程式設計筆記
- 《Head First Java》20200927讀書筆記Java筆記
- JavaScript 高階程式設計 第三章 讀書筆記(1)JavaScript程式設計筆記
- 《JavaScript Dom程式設計藝術》讀書筆記(一)JavaScript程式設計筆記
- 《Head First Java》20201017讀書筆記Java筆記
- 《Go 語言程式設計》讀書筆記 (三) 方法Go程式設計筆記
- 《Head First Java》20201009讀書筆記Java筆記
- 《Head First C 中文版》審讀筆記(五)筆記
- 《Head First C 中文版》審讀筆記(四)筆記
- 《Head First C 中文版》審讀筆記(二)筆記
- 《Head First C 中文版》審讀筆記(一)筆記
- 《.NET 安全程式設計》 讀書筆記(一、二、三)程式設計筆記
- Head First 設計模式筆記 3.裝飾者模式設計模式筆記
- JavaScript DOM 程式設計藝術(第2版) 讀書筆記JavaScript程式設計筆記
- 《程式設計匠藝》讀書筆記程式設計筆記
- 讀《大話設計模式》和《head first 設計模式》心得設計模式
- 《Java程式設計思想》讀書筆記一Java程式設計筆記
- 讀書筆記-Java程式設計思想-03筆記Java程式設計
- Java遊戲程式設計讀書筆記(轉)Java遊戲程式設計筆記
- 反應式程式設計讀書筆記程式設計筆記
- 《JavaScript 高階程式設計》精讀筆記JavaScript程式設計筆記
- CSAPP 併發程式設計讀書筆記APP程式設計筆記
- C#高階程式設計 讀書筆記C#程式設計筆記
- 《程式設計師的吶喊》讀書筆記程式設計師筆記
- 《程式設計師自我修養》讀書筆記程式設計師筆記
- 《程式設計師修煉之道》讀書筆記程式設計師筆記
- 《精通JavaScript》讀書筆記JavaScript筆記
- 程式設計師生存指南讀書筆記-第三篇(學習)程式設計師筆記
- 《Head First 設計模式》:策略模式設計模式
- 《Head First JavaScript程式設計》作者Eric&Elisabeth訪談問題徵集JavaScript程式設計