A function is first-class; a function is considered to be an object.
Wikipedia-JavaScriptThis means the language supports passing functions as arguments to other functions, returning them as the values from other functions, and assigning them to variables or storing them in data structures.
Wikipedia-First-class function
Function,也就是函式,是程式裡面執行某項作業的程式碼區塊。若為函式取了相符其功能的名稱,則可以使你的程式碼更容易被閱讀。
在JavaScript中, 函式為一等公民,這代表著函式是可以被當成引數丟進其他函式裡的!除此之外,函式也可以被當成其他函式的回傳值、指定給一個變數、或存在資料結構中。
好的,身為一個程式菜雞,光是上面這段文字就足以冒出很多問號了!所以在正式開始之前,先簡單講解一下一些基礎的專有名詞。
我們可以把變數看成兩個主要的部分,一個是其識別字(identifier),另個則是其值(value)。在JavaScript中,宣告變數的方法有兩種:var、let。宣告時識別字與值之間以等號(=)相連。
例如執行以下程式碼時,系統就會在記憶體中為你的宣告弄出一個空間,將MrKing這個字串存進去,並且給這個記憶體位置一個名稱: room404,這樣我們之後要存取這個位置時,就能直接用room404這個名稱存取!
let room404 = 'MrKing'
此動作可以拆解成兩個動作:
let room404 //在記憶體中裝潢了一間房間,並將其命名為room404
room404 = 'MrKing' //讓MrKing這個客人(資料,此處的型別為字串)住進去
而宣告常數的方法則是使用const。常數與變數之間最大的不同,就是常數不能再一次的指定值給它。
const room200 = 'Ok' //代表Ok永遠也不會搬出room200這個房間(記憶體位置)了!
room404 = 'MrSmith' //當room404讓MrSmith這個客人(資料,此處的型別為字串)住進去時,意味著上一個客人已經被強制遷出
遙記當初老師上課時,經常聽到這兩個詞,對我來說始終分不清出參數和引數的差別。甚至聽網頁工程師朋友說,這些詞很容易被菜雞們誤用。所以這邊將簡單介紹這兩個名詞的差別。
中文 | 參數 | 引數 |
---|---|---|
英文 | parameter | argument |
使用時機 | 宣告函式時 | 使用函式時 |
function plus(a,b){
return a+b
} //a 跟 b 是 參數parameters
plus('55','66') //55跟66是 引數argument
在其他程式語言可能會遇到的argument error,即是引數錯誤而非參數,例如:
ArgumentError: wrong number of arguments (given 2, expected 1)
此錯誤訊息就是在執行function或method的時候,給了他與期望數量不符的引數。
所以,看到這邊的你,下次跟工作夥伴討論相關噴錯的訊息時,可以正名為「引數錯誤」而非「參數錯誤」了:DDD
那麼第二天的內容就先到這邊告一段落了,明天將會繼續說明回傳值以及一些function的面試題目:)