91久久精品无码一区二区精品|国内精品久久久久久无码不卡|91麻豆免费免费国产观看|亚洲国产韩国欧美在线

    1. <ruby id="auv1z"><optgroup id="auv1z"></optgroup></ruby>

      您當前位置: 南順網絡>> 官方資訊>> 建站知識

      每日 30 秒 函數參數騷操作

      在調用函數時不得不提的就是 參數 了,很多小伙伴寫函數很容易就寫成了:

      function area (width, height) {  
           return width * height; 
         }

      兩個參數還好腦子記得住,但是下面這種情況乍辦:

      function infomation ( name, sex, height, birthday,color, likes, follow, age ) {     // ... }

      這么多參數每次開發調用時有使用 ide 會自動提示還好,如果沒有則有可能需要翻文檔或者跳轉到定義處查看,除了比較麻煩點外還行。


      不知道大家有沒有和別人對接過開發,有的同學開發有時候不會考慮別人是否對他的代碼有依賴,直接腦袋一拍就給你的參數順序對調了,結果代碼提交后全軍崩潰各種報錯飄紅。

      傳遞對象而不是參數列表

      可以利用 JavaScript 的對象來傳遞參數:

      function infomation (user) {     // user.name }
       infomation({ name: 'xiaoer', age: 18 })

      相對于參數列表傳遞對象屬性更好記也沒有強制的順序,如果命名足夠清晰在后期維護代碼的時候甚至只要看屬性名就可以馬上理解過來。如果其他同學開發新的功能也不會怕他順序亂調了,但是最好要對新加的參數做出兼容,不然還是會讓依賴的其他函數一路飄紅。

      使用解構賦值

      參數列表被對象替換解決了參數列表順序的問題,可是每次調用的時候都需要從對象中取值使得函數每次都要訪問對象,帶來了變量長度變長和很多無意義的賦值。再者如果調用者不小心多傳遞了參數,再不巧函數中遍歷了對象這可能會產生BUG,可以利用解構賦值來解決:

      function infomation ({ name, age, height }) { }

      這樣既對傳遞的參數做出了防御又可以方便的使用參數。

      使用默認值

      你永遠不知道用戶會怎么使用產品。

      產品上線后總會出現各種奇奇怪怪的錯誤,用戶總是不按照預期進行操作產品,不斷的 BUG 傳來實在讓人難受。

      其實在調用函數時我們也是一個用戶,有的參數不能為空但是我們卻給出了空值,導致函數不能按預期執行。在書寫函數時應該做好別人調用函數時不按套路出牌的情況,例如給出默認值和對數據進行轉化:

      function infomation ({ name = 'anonymous', age = 0, height = 160 }) {     // ... }

      當然你也可以使用 TypeScript 等工具來提升編程的安全性,但 巧婦難為無米之炊 在有的時候不是你想用就能用的,需要整個公司一起進行技術的升級。

      參數變為可選參數

      上面例子中的函數在 infomation({ age: 16 }) 這樣調用的情況下,可以按照預期的默認值執行。但是想讓這個對象也可選的時候 infomation() 將會報錯,因為沒有對象讓其解構,可以利用 {} 來使得對象也可選:

      function infomation ({ name = 'anonymous', age = 0, height = 160 } = {}) {     // ... }

      重命名

      有時候需要對參數進行重命名,但是已經很多地方都使用了這個參數時??梢栽诤瘮祱绦凶铋_始的時候進行重命名,但是這樣顯然不夠 geek(主要是不夠偷懶)依舊利用 解構賦值 來實現重命名:

      function infomation ({ name:username = 'anonymous', age = 0, height = 160 } = {}) {     // ... }

      當然 解構賦值 也可以在平常開發中使用,方便我們寫出 規范奇淫技巧,帶來偷懶摸魚同時也帶來優雅。




      編輯:--史志成

      1. <ruby id="auv1z"><optgroup id="auv1z"></optgroup></ruby>