一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - js教程 - 五種使 JavaScript 代碼庫更干凈的方法

五種使 JavaScript 代碼庫更干凈的方法

2021-12-29 23:23Mason程 js教程

今天向大家介紹5種使JavaScript代碼庫更干凈的方法,一起來看一下都有哪些吧!

五種使 JavaScript 代碼庫更干凈的方法

1、使用默認參數代替短路或條件

默認參數通常比短路更干凈。

  1. function SomeMethod(paramThatCanBeUndefined) { 
  2.  
  3.    const localValue = paramThatCanBeUndefined || "Default Value"
  4.    console.log(localValue) 
  5.    // ... 
  6. SomeMethod() // Default Value 
  7. SomeMethod("SomeValue") // SomeValue 

嘗試以下方法:

  1. function SomeMethod( 
  2.   console.log(paramThatCanBeUndefined) 
  3.   // ... 
  4. SomeMethod() // Default Value 
  5. SomeMethod("SomeValue") // SomeValue 

聲明:Falsy值,如'',"",false,null,0,和NaN將不會被默認值替代:

  1. function SomeMethod(paramThatCanBeUndefined = "Default Value") {         
  2.   console.log(paramThatCanBeUndefined)   
  3.   // ... 
  4. SomeMethod(null) // will not Default Value, will null Instead 
  5. SomeMethod("SomeValue") // SomeValue 

2、處理多個條件

  1. const conditions = ["Condition 2","Condition String2"]; 
  2. someFunction(str){ 
  3.   if(str.includes("someValue1") || str.includes("someValue2")){ 
  4.     return true 
  5.   }else
  6.     return false 
  7.   } 

一種更干凈的方法是:

  1. someFunction(str){ 
  2.    const conditions = ["someValue1","someValue2"]; 
  3.    return conditions.some(condition=>str.includes(condition)); 

3、用動態鍵值對替換開關(即對象文字)

開關版本(或將開關替換為if / else):

  1. const UserRole = { 
  2.   ADMIN: "Admin"
  3.   GENERAL_USER: "GeneralUser"
  4.   SUPER_ADMIN: "SuperAdmin"
  5. }; 
  6. function getRoute(userRole = "default role"){ 
  7.  
  8.  
  9.   switch(userRole){ 
  10.     case UserRole.ADMIN: 
  11.       return "/admin" 
  12.     case UserRole.GENERAL_USER: 
  13.         return "/GENERAL_USER" 
  14.     case UserRole.SUPER_ADMIN: 
  15.         return "/superadmin" 
  16.     default
  17.       return "/"  
  18.   } 
  19.  
  20. console.log(getRoute(UserRole.ADMIN)) // return "/admin" 
  21. console.log(getRoute("Anything")) // return Default path 
  22. console.log(getRoute()) // return Default path 
  23. console.log(getRoute(null)) // return Default path 
  24.  
  25. // More cases if new arrive 
  26. // You can think if else instead of switch 

動態鍵值對版本:

  1. const UserRole = { 
  2.    ADMIN: "Admin"
  3.    GENERAL_USER: "GeneralUser"
  4.    SUPER_ADMIN: "SuperAdmin"
  5. }; 
  6. function getRoute(userRole = "default role"){ 
  7.  const appRoute = { 
  8.   [UserRole.ADMIN]: "/admin"
  9.   [UserRole.GENERAL_USER]: "/user"
  10.   [UserRole.SUPER_ADMIN]: "/superadmin" 
  11.  }; 
  12.  return appRoute[userRole] || "Default path"
  13. console.log(getRoute(UserRole.ADMIN)) // return "/admin" 
  14. console.log(getRoute("Anything")) // return Default path 
  15. console.log(getRoute()) // return Default path 
  16. console.log(getRoute(null)) // return Default path 
  17. // No more switch/if-else here. 
  18. // Easy to Further expansion 

4、避免過多的函數參數

  1. function myFunction(employeeName,jobTitle,yrExp,majorExp){ 
  2.  return `${employeeName} is working as ${jobTitle} with ${yrExp}    years of experience in ${majorExp}` 
  3. //output be like John is working as Project Manager with 12 year of experience in Project Management 
  4. // you can call it via 
  5. console.log(myFunction("John","Project Manager",12,"Project Management")) 
  6. //    ***** PROBLEMS ARE ***** 
  7. // Violation of 'clean code' principle 
  8. // Parameter sequencing is important 
  9. // Unused Params warning if not used 
  10. // Testing need to consider a lot of edge cases. 

這是一種更清潔的方法:

  1. function myFunction({employeeName,jobTitle,yrExp,majorExp}){ 
  2.  return `${employeeName} is working as ${jobTitle} with ${yrExp} years of experience in ${majorExp}` 
  3. //output be like John is working as Project Manager with 12 year of experience in Project Management 
  4. // you can call it via 
  5. const mockTechPeople = { 
  6.   employeeName:"John"
  7.   jobTitle:"Project Manager"
  8.   yrExp:12, 
  9.   majorExp:"Project Management" 
  10. console.log(myFunction(mockTechPeople)) 
  11. // ES2015/ES6 destructuring syntax is in action 
  12. // map your desired value to variable you need. 

5、使用Object.assign設置默認對象

這看起來很繁瑣:

  1. const someObject = { 
  2.  title: null
  3.  subTitle: "Subtitle"
  4.  buttonColor: null
  5.  disabled: true 
  6. }; 
  7. function createOption(someObject) { 
  8.  someObject.title = someObject.title || "Default Title"
  9.  someObject.subTitle = someObject.subTitle || "Default Subtitle"
  10.  someObject.buttonColor = someObject.buttonColor || "blue"
  11.  someObject.disabled = someObject.disabled !== undefined ?  someObject.disabled : true
  12.  return someObject 
  13. console.log(createOption(someObject)); 
  14.  
  15. // Output be like  
  16. // {title: 'Default Title', subTitle: 'Subtitle', buttonColor: 'blue', disabled: true

這種方法看起來更好:

  1. const someObject = { 
  2.   title: null
  3.   subTitle: "Subtitle"
  4.   buttonColor: null
  5.   disabled: true 
  6.  }; 
  7.  function creteOption(someObject) { 
  8.   const newObject = Object.assign({ 
  9.    title: "Default Title"
  10.    subTitle: "Default Subtitle"
  11.    buttonColor: "blue"
  12.    disabled: true 
  13.  },someObject) 
  14.  return newObject 
  15.  } 
  16.  console.log(creteOption(someObject)); 

原文鏈接:https://www.toutiao.com/a7046985686419014157/

延伸 · 閱讀

精彩推薦
  • js教程JavaScript canvas實現雨滴特效

    JavaScript canvas實現雨滴特效

    這篇文章主要為大家詳細介紹了JavaScript canvas實現雨滴特效,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    huangdong19316862021-12-29
  • js教程JavaScript代碼實現簡單計算器

    JavaScript代碼實現簡單計算器

    這篇文章主要為大家詳細介紹了JavaScript代碼實現簡單計算器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    小蟲蟲~3992021-12-21
  • js教程JavaScript中arguments的使用方法詳解

    JavaScript中arguments的使用方法詳解

    這篇文章主要給大家介紹了關于JavaScript中arguments的使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的...

    等待的L先生3612021-12-15
  • js教程微信小程序學習之自定義滾動彈窗

    微信小程序學習之自定義滾動彈窗

    這篇文章主要給大家介紹了關于微信小程序學習之自定義滾動彈窗的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考...

    юноша9052021-12-15
  • js教程原生JavaScript實現留言板

    原生JavaScript實現留言板

    這篇文章主要為大家詳細介紹了原生JavaScript實現留言板,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    棟棟很優秀啊5232021-12-29
  • js教程JavaScript canvas實現文字時鐘

    JavaScript canvas實現文字時鐘

    這篇文章主要為大家詳細介紹了JavaScript canvas實現文字時鐘,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    _Adoph6092021-12-29
  • js教程使用 JavaScript 進行數據分組最優雅的方式

    使用 JavaScript 進行數據分組最優雅的方式

    對數據進行分組,是我們在開發中經常會遇到的需求,使用 JavaScript 進行數據分組的方式也有很多種,但是由于沒有原生方法的支持,我們自己實現的數據...

    code秘密花園4332021-12-27
  • js教程一文搞懂JavaScript中的Typeof用法

    一文搞懂JavaScript中的Typeof用法

    typeof 運算符是 JavaScript 的基礎知識點,盡管它存在一定的局限性(見下文),但在前端js的實際編碼過程中,仍然是使用比較多的類型判斷方式。...

    鋒享前端8072021-12-29
主站蜘蛛池模板: 久久国产精品高清一区二区三区 | 日本一区二区三区视频在线观看 | 精品麻豆 | 欧美日韩在线一区 | 精品四虎国产在免费观看 | 亚洲 综合 自拍 精品 在线 | 波多野结衣中文字幕乱七八糟 | 激情小视频网站 | 国内精品久久久久久久久 | 青青操在线 | 欧美 变态 另类 人妖班 | 男男playh片在线观看 | 欧美一级特黄特色大片免费 | 亚洲欧美国产在线 | 国产一级片免费视频 | 国产精品一区二区三区免费 | 免费在线观看成年人视频 | 2019国内自拍大神视频 | 婷婷精品| 午夜毛片在线观看 | 成人精品一区二区三区中文字幕 | 免费一级夫妻a | 亚洲热在线观看 | 给我免费的视频在线观看 | mm131亚洲精品久久 | 九九九精品视频 | 久久电影午夜 | 青青青在线免费 | 视频在线观看国产 | 日本三级免费观看 | 男女男精品网站免费观看 | 欧美又大又粗又长又硬 | 日韩精品成人免费观看 | 青青草高清视频 | 免费一级毛片在线播放 | 加勒比成人 | 动漫美女人物被黄漫在线看 | 免费日本在线视频 | juliaann大战七个黑人 | 日韩精品视频在线观看免费 | 亚洲精品中文 |