<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          我的代碼簡潔之道

          共 3743字,需瀏覽 8分鐘

           ·

          2021-10-17 15:29

          大廠技術??高級前端??Node進階

          點擊上方?程序員成長指北,關注公眾號

          回復1,加入高級Node交流群


          1.通過條件判斷給變量賦值布爾值的正確姿勢

          //?bad
          if?(a?===?'a')?{
          ????b?=?true
          }?else?{
          ????b?=?false
          }

          //?good
          b?=?a?===?'a'

          2.在if中判斷數(shù)組長度不為零的正確姿勢

          //?bad
          if?(arr.length?!==?0)?{
          ????//?todo
          }

          //?good
          if?(arr.length)?{
          ????//?todo
          }

          3.同理,在if中判斷數(shù)組長度為零的正確姿勢

          //?bad
          if?(arr.length?===?0)?{
          ????//?todo
          }

          //?good
          if?(!arr.length)?{
          ????//?todo
          }

          4.簡單的if判斷使用三元表達式

          //?bad
          if?(a?===?'a')?{
          ????b?=?a
          }?else?{
          ????b?=?c
          }

          //?good
          b?=?a?===?'a'???a?:?c

          5.使用includes簡化if判斷

          //?bad
          if?(a?===?1?||?a?===?2?||?a?===?3?||?a?===?4)?{
          ????//?todo
          }

          //?good
          let?arr?=?[1,?2,?3,?4]
          if?(arr.includes(a))?{
          ????//?todo
          }

          巧用數(shù)組方法,盡量避免用for循環(huán)

          6.使用some方法判斷是否有滿足條件的元素

          //?bad
          let?arr?=?[1,?3,?5,?7]
          function?isHasNum?(n)?{
          ????for?(let?i?=?0;?i?????????if?(arr[i]?===?n)?{
          ????????????return?true
          ????????}
          ????}
          ????return?false
          }

          //?good
          let?arr?=?[1,?3,?5,?7]
          let?isHasNum?=?n?=>?arr.some(num?=>?num?===?n)

          //?best
          let?arr?=?[1,?3,?5,?7]
          let?isHasNum?=?(n,?arr)?=>?arr.some(num?=>?num?===?n)

          7.使用forEach方法遍歷數(shù)組,不形成新數(shù)組

          //?bad
          for?(let?i?=?0;?i?????//?todo
          ????arr[i].key?=?balabala
          }

          //?good
          arr.forEach(item?=>?{
          ????//?todo
          ????item.key?=?balabala
          })

          8.使用filter方法過濾原數(shù)組,形成新數(shù)組

          //?bad
          let?arr?=?[1,?3,?5,?7],
          ????newArr?=?[]
          for?(let?i?=?0;?i?????if?(arr[i]?>?4)?{
          ????????newArr.push(arr[i])
          ????}
          }

          //?good
          let?arr?=?[1,?3,?5,?7]
          let?newArr?=?arr.filter(n?=>?n?>?4)?//?[5,?7]

          9.使用map對數(shù)組中所有元素批量處理,形成新數(shù)組

          //?bad
          let?arr?=?[1,?3,?5,?7],
          ????newArr?=?[]
          for?(let?i?=?0;?i?????newArr.push(arr[i]?+?1)
          }

          //?good
          let?arr?=?[1,?3,?5,?7]
          let?newArr?=?arr.map(n?=>?n?+?1)?//?[2,?4,?6,?8]

          巧用對象方法,避免使用for...in

          10.使用Object.values快速獲取對象鍵值

          let?obj?=?{
          ????a:?1,
          ????b:?2
          }
          //?bad
          let?values?=?[]
          for?(key?in?obj)?{
          ????values.push(obj[key])
          }

          //?good
          let?values?=?Object.values(obj)?//?[1,?2]

          11.使用Object.keys快速獲取對象鍵名

          let?obj?=?{
          ????a:?1,
          ????b:?2
          }
          //?bad
          let?keys?=?[]
          for?(value?in?obj)?{
          ????keys.push(value)
          }

          //?good
          let?keys?=?Object.keys(obj)?//?['a',?'b']

          巧用解構簡化代碼

          12.解構數(shù)組進行變量值的替換

          //?bad
          let?a?=?1,
          ????b?=?2
          let?temp?=?a
          a?=?b
          b?=?temp

          //?good
          let?a?=?1,
          ????b?=?2
          [b,?a]?=?[a,?b]

          13.解構對象

          //?bad
          setForm?(person)?{
          ????this.name?=?person.name
          ????this.age?=?person.age?
          }

          //?good
          setForm?({name,?age})?{
          ????this.name?=?name
          ????this.age?=?age?
          }

          14.解構時重命名簡化命名

          有的后端返回的鍵名特別長,你可以這樣干

          //?bad
          setForm?(data)?{
          ????this.one?=?data.aaa_bbb_ccc_ddd
          ????this.two?=?data.eee_fff_ggg
          }
          //?good
          setForm?({aaa_bbb_ccc_ddd,?eee_fff_ggg})?{
          ????this.one?=?aaa_bbb_ccc_ddd
          ????this.two?=?eee_fff_ggg
          }

          //?best
          setForm?({aaa_bbb_ccc_ddd:?one,?eee_fff_ggg:?two})?{
          ????this.one?=?one
          ????this.two?=?two
          }

          15.解構時設置默認值

          //?bad
          setForm?({name,?age})?{
          ????if?(!age)?age?=?16
          ????this.name?=?name
          ????this.age?=?age?
          }

          //?good
          setForm?({name,?age?=?16})?{
          ????this.name?=?name
          ????this.age?=?age?
          }

          16.||短路符設置默認值

          let?person?=?{
          ????name:?'張三',
          ????age:?38
          }

          let?name?=?person.name?||?'佚名'

          17.&&短路符判斷依賴的鍵是否存在防止報錯'xxx of undfined'

          let?person?=?{
          ????name:?'張三',
          ????age:?38,
          ????children:?{
          ????????name:?'張小三'
          ????}
          }

          let?childrenName?=?person.children?&&?person.childre.name

          18.字符串拼接使用${}

          let?person?=?{
          ????name:?'LiMing',
          ????age:?18
          }
          //?bad
          function?sayHi?(obj)?{
          ????console.log('大家好,我叫'?+?person.name?=?',我今年'?+?person.age?+?'了')
          }

          //?good
          function?sayHi?(person)?{
          ????console.log(`大家好,我叫${person.name},我今年${person.age}了`)
          }

          //?best
          function?sayHi?({name,?age})?{
          ????console.log(`大家好,我叫${name},我今年${age}了`)
          }

          19.函數(shù)使用箭頭函數(shù)

          let?arr?[18,?19,?20,?21,?22]
          //?bad
          function?findStudentByAge?(arr,?age)?{
          ????return?arr.filter(function?(num)?{
          ????????return?num?===?age
          ????})
          }

          //?good
          let?findStudentByAge?=?(arr,?age)=>?arr.filter(num?=>?num?===?age)

          20.函數(shù)參數(shù)校驗

          //?bad
          let?findStudentByAge?=?(arr,?age)?=>?{
          ????if?(!age)?throw?new?Error('參數(shù)不能為空')
          ????return?arr.filter(num?=>?num?===?age)
          }

          //?good
          let?checkoutType?=?()?=>?{
          ????throw?new?Error('參數(shù)不能為空')
          }
          let?findStudentByAge?=?(arr,?age?=?checkoutType())?=>
          ????arr.filter(num?=>?num?===?age)

          歡迎大佬們指正交流,感謝支持

          轉載自:mmdjj

          https://juejin.cn/post/6903325147420164104

          Node 社群


          我組建了一個氛圍特別好的 Node.js 社群,里面有很多 Node.js小伙伴,如果你對Node.js學習感興趣的話(后續(xù)有計劃也可以),我們可以一起進行Node.js相關的交流、學習、共建。下方加 考拉 好友回復「Node」即可。


          ???“分享、點贊、在看” 支持一波??

          瀏覽 36
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产1区2区3区 | 日本女人久久 | 三级日韩在线 | 一区二区三区免费无码 | 婷婷色丁香五月 |