<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>

          我的代碼簡(jiǎn)潔之道

          共 3631字,需瀏覽 8分鐘

           ·

          2021-11-13 00:38

          點(diǎn)擊上方關(guān)注?前端技術(shù)江湖,一起學(xué)習(xí),天天進(jìn)步



          1.通過(guò)條件判斷給變量賦值布爾值的正確姿勢(shì)

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

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

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

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

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

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

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

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

          4.簡(jiǎn)單的if判斷使用三元表達(dá)式

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

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

          5.使用includes簡(jiǎn)化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方法判斷是否有滿(mǎn)足條件的元素

          //?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方法過(guò)濾原數(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對(duì)數(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]

          巧用對(duì)象方法,避免使用for...in

          10.使用Object.values快速獲取對(duì)象鍵值

          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快速獲取對(duì)象鍵名

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

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

          巧用解構(gòu)簡(jiǎn)化代碼

          12.解構(gòu)數(shù)組進(jìn)行變量值的替換

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

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

          13.解構(gòu)對(duì)象

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

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

          14.解構(gòu)時(shí)重命名簡(jiǎn)化命名

          有的后端返回的鍵名特別長(zhǎng),你可以這樣干

          //?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.解構(gòu)時(shí)設(shè)置默認(rèn)值

          //?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.||短路符設(shè)置默認(rèn)值

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

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

          17.&&短路符判斷依賴(lài)的鍵是否存在防止報(bào)錯(cuò)'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ù)校驗(yàn)

          //?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)

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

          轉(zhuǎn)載自:mmdjj

          https://juejin.cn/post/6903325147420164104

          The End

          歡迎自薦投稿到《前端技術(shù)江湖》,如果你覺(jué)得這篇內(nèi)容對(duì)你挺有啟發(fā),記得點(diǎn)個(gè)?「在看」


          點(diǎn)個(gè)『在看』支持下?

          瀏覽 38
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  影音先锋人妻啪啪aV资源网站 | 蜜桃视频成人网站入口 | 亚洲免费a | 精品韩无码台湾成人在线 | 日韩欧美中文在线 |