關於JS的可選引數,該知道的都在這裡了

  • 作者:由 匿名使用者 發表于 攝影
  • 2022-11-26

關於JS的可選引數,該知道的都在這裡了戶如樂9318 2022-07-13

我是一枚土生土長的iOS程式猿,之所以會寫關於JS的文章,主要是因為我最近在負責組裡的部分運營需求,所以寫前端也逐漸比較多,於是乎學習JS勢在必行,所以就開寫了。

我們都知道函式是js裡的一等公民,並且在js裡,你宣告一個函式——你可以定製多個引數,與此同時,你在呼叫該函式的時候不需要傳入所有的引數,它就能正常執行——只不過這些引數預設就是 undefined 而已。所以似乎js的函式天生就帶有可選引數這個功能,只不過在你不進行定製的時候它們都具有一個“統一”的值罷了。

所以,我們也知道,除非函數里就實現了針對某個引數為 undefined 時的行為,讓引數為 undefined 是比較危險的。

該如何實現函式內的可選引數,我們將用js裡的構造方法來舉例(假如我們要實現一個Person類):

通常我們都會這麼實現,現在假想我們要將 height 和 weight 引數設為可選引數,可選引數的實質就是

令未被賦值的引數具有一個預設值

,直白地處理,我們可以寫成這樣:

但是因為我們這裡的引數只是簡單的賦值給屬性,所以我們可以這麼寫:

面對這樣的實現,不難發現它還有點問題——這種實現永遠只能把可選引數連續地宣告在函式的末端,必要的引數必須得放前面,因為它只能這樣生成:

假如我是 age 和 weight 為可選引數呢?

因為這樣子賦值,沒法讓 170cm 賦到 height 屬性上,只會賦到 age 屬性上,這顯然不是我們想要的。

一種簡便的解決方法是不定義這麼多的引數賦值,而統一使用一個物件來進行賦值:

而在es6裡,它支援了為引數提供預設值,所以你可以這麼幹:

Top