欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

5種方法告訴你如何使JavaScript 代碼庫(kù)更干凈

 更新時(shí)間:2021年09月10日 08:45:00   作者:vue_fe  
J avaScript無(wú)處不在,從PC端到移動(dòng)設(shè)備端,甚至是后端,都在使用JavaSc ript。在本文中,將嘗試一些可用來(lái)使代碼看起來(lái)更簡(jiǎn)潔的實(shí)踐方案,希望能幫助到大家

1、使用默認(rèn)參數(shù)代替短路或條件

默認(rèn)參數(shù)通常比短路更干凈。

function SomeMethod(paramThatCanBeUndefined) {

   const localValue = paramThatCanBeUndefined || "Default Value";
   console.log(localValue)
   // ...
}
SomeMethod() // Default Value
SomeMethod("SomeValue") // SomeValue

嘗試以下方法:

function SomeMethod(
  console.log(paramThatCanBeUndefined)
  // ...
}
SomeMethod() // Default Value
SomeMethod("SomeValue") // SomeValue

聲明:Falsy值,如'',"",false,null,0,和NaN將不會(huì)被默認(rèn)值替代:

function SomeMethod(paramThatCanBeUndefined = "Default Value") {        
  console.log(paramThatCanBeUndefined)  
  // ...
}
SomeMethod(null) // will not Default Value, will null Instead
SomeMethod("SomeValue") // SomeValue

2、處理多個(gè)條件

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

一種更干凈的方法是:

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

3、用動(dòng)態(tài)鍵值對(duì)替換開關(guān)(即對(duì)象文字)

開關(guān)版本(或?qū)㈤_關(guān)替換為if / else):

const UserRole = {
  ADMIN: "Admin",
  GENERAL_USER: "GeneralUser",
  SUPER_ADMIN: "SuperAdmin",
};
function getRoute(userRole = "default role"){


  switch(userRole){
    case UserRole.ADMIN:
      return "/admin"
    case UserRole.GENERAL_USER:
        return "/GENERAL_USER"
    case UserRole.SUPER_ADMIN:
        return "/superadmin"
    default:
      return "/" 
  }

}
console.log(getRoute(UserRole.ADMIN)) // return "/admin"
console.log(getRoute("Anything")) // return Default path
console.log(getRoute()) // return Default path
console.log(getRoute(null)) // return Default path

// More cases if new arrive
// You can think if else instead of switch

動(dòng)態(tài)鍵值對(duì)版本:

const UserRole = {
   ADMIN: "Admin",
   GENERAL_USER: "GeneralUser",
   SUPER_ADMIN: "SuperAdmin",
};
function getRoute(userRole = "default role"){
 const appRoute = {
  [UserRole.ADMIN]: "/admin",
  [UserRole.GENERAL_USER]: "/user",
  [UserRole.SUPER_ADMIN]: "/superadmin"
 };
 return appRoute[userRole] || "Default path";
}
console.log(getRoute(UserRole.ADMIN)) // return "/admin"
console.log(getRoute("Anything")) // return Default path
console.log(getRoute()) // return Default path
console.log(getRoute(null)) // return Default path
// No more switch/if-else here.
// Easy to Further expansion

4、避免過(guò)多的函數(shù)參數(shù)

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

這是一種更清潔的方法:

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

5、使用Object.assign設(shè)置默認(rèn)對(duì)象

這看起來(lái)很繁瑣:

const someObject = {
 title: null,
 subTitle: "Subtitle",
 buttonColor: null,
 disabled: true
};
function createOption(someObject) {
 someObject.title = someObject.title || "Default Title";
 someObject.subTitle = someObject.subTitle || "Default Subtitle";
 someObject.buttonColor = someObject.buttonColor || "blue";
 someObject.disabled = someObject.disabled !== undefined ?  someObject.disabled : true;
 return someObject
}
console.log(createOption(someObject));

// Output be like 
// {title: 'Default Title', subTitle: 'Subtitle', buttonColor: 'blue', disabled: true}

這種方法看起來(lái)更好:

const someObject = {
  title: null,
  subTitle: "Subtitle",
  buttonColor: null,
  disabled: true
 };
 function creteOption(someObject) {
  const newObject = Object.assign({
   title: "Default Title",
   subTitle: "Default Subtitle",
   buttonColor: "blue",
   disabled: true
 },someObject)
 return newObject
 }
 console.log(creteOption(someObject));

到此這篇關(guān)于如何使JavaScript 代碼庫(kù)更干凈 5種方法告訴你的文章就介紹到這了,更多相關(guān)使 JavaScript 代碼庫(kù)更干凈的5種方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!謝謝大家的閱讀

相關(guān)文章

  • 常用的JavaScript數(shù)組方法

    常用的JavaScript數(shù)組方法

    一說(shuō)到JavaScript的數(shù)組,大家基本都能馬上想起pop()、push()、shift()、unshift()、indexof()等等,今天小編就給大家分享幾個(gè)開發(fā)中常用的js數(shù)組方法即他們的用法。需要的朋友可以參考下面文章的具體內(nèi)容
    2021-09-09
  • 微信小程序 navigator 組件實(shí)例詳解

    微信小程序 navigator 組件實(shí)例詳解

    這篇文章主要介紹了微信小程序navigator組件實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • 本地搭建微信小程序服務(wù)器的實(shí)現(xiàn)方法

    本地搭建微信小程序服務(wù)器的實(shí)現(xiàn)方法

    這篇文章主要介紹了本地搭建微信小程序服務(wù)器的實(shí)現(xiàn)方法的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家輕松的搭建自己的微信小程序的服務(wù)器,需要的朋友可以參考下
    2017-10-10
  • pnpm對(duì)npm及yarn降維打擊詳解

    pnpm對(duì)npm及yarn降維打擊詳解

    這篇文章主要為大家介紹了pnpm對(duì)npm及yarn降維打擊原因詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • JavaScript實(shí)現(xiàn)一鍵復(fù)制內(nèi)容剪貼板

    JavaScript實(shí)現(xiàn)一鍵復(fù)制內(nèi)容剪貼板

    這篇文章主要為大家介紹了JavaScript實(shí)現(xiàn)一鍵復(fù)制內(nèi)容,document.execCommand原生JS設(shè)置剪貼板的實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • 微信小程序之網(wǎng)絡(luò)請(qǐng)求簡(jiǎn)單封裝實(shí)例詳解

    微信小程序之網(wǎng)絡(luò)請(qǐng)求簡(jiǎn)單封裝實(shí)例詳解

    這篇文章主要介紹了微信小程序之網(wǎng)絡(luò)請(qǐng)求簡(jiǎn)單封裝實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • JavaScript?ES6語(yǔ)法中l(wèi)et,const?,var?的區(qū)別

    JavaScript?ES6語(yǔ)法中l(wèi)et,const?,var?的區(qū)別

    這篇文章主要為大家介紹了JavaScript中l(wèi)et,const?,var?的區(qū)別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • 微信小程序  checkbox組件詳解及簡(jiǎn)單實(shí)例

    微信小程序 checkbox組件詳解及簡(jiǎn)單實(shí)例

    這篇文章主要介紹了微信小程序 checkbox組件詳解及簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • JavaScript?對(duì)象管家?Proxy

    JavaScript?對(duì)象管家?Proxy

    這篇文章主要為大家介紹了JavaScript對(duì)象管家Proxy使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • JS前端性能指標(biāo)定位FMP使用詳解

    JS前端性能指標(biāo)定位FMP使用詳解

    這篇文章主要為大家介紹了JS前端性能指標(biāo)定位FMP使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01

最新評(píng)論