這是一門在Udemy 課程,是同學介紹的。主要是因為想要運用到過年前這段時間好好的增進自己的JavaScript的基礎能力,讓自己能往前端工程師更近一步。主要還是會以筆記的形式做呈現!
Parameters(參數)
其實在我們介紹function時我們就已經認parameters了:
1 | function greet(firstName, lastName, language) { |
程式碼中的firstName
, lastName
, language
就是parameters。
在其他程式語言裡面,如果有參數但我在呼叫時卻沒有給,在執行時通常都會出現問題,但在JavaScript裡即便你沒有給參數他還是會執行,只是會給出undefined
是不是覺得很熟悉又出現undefined
,沒錯會造成這個原因又是Hoisting
。
至於用強制轉換概念設定預設值或是在參數中建立預設值,因為在前幾篇介紹過了就不再特別說明了。
Arguments(引數)
argument是傳遞給function的所有parameters之集合,不用管相對應的參數是否有明確定義,也就是說,arguments會包含所有你放入function中的參數值(自己感覺有點像React 裡的props)。
來看一下以下範例:
1 | function greet(firstName, lastName, language) { |
我們會得到以下的結果:
每一次的arguments都會分別顯示在該次函式中有哪些參數值
注意看arguments回傳的值,我們會注意到是斜體的 [ ] ,這就是之前有學習到的Array-like。
Array-like(類陣列)並不是真的陣列,因此arguments回傳的值並不具備所有陣列所具有的特徵。
但由於Array-like裡面會有length的屬性,因此我們可以使用:
1 | if (arguments.length === 0) { |
這段code。(要不是上了這堂課我還真的不知道有arguments)
Spread
簡單來說,就是它可以把函數中許多的參數(arguments)或陣列中許多的元素(elements)形成一個新的變數。