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

          7個(gè) JavaScript 小技巧,讓你的代碼更出色!

          共 3828字,需瀏覽 8分鐘

           ·

          2021-08-11 10:07

          原文 | https://medium.com/madhash/7-little-big-javascript-techniques-that-makes-your-code-better-7894d3f984c5

          翻譯 | 小愛(ài)

          學(xué)習(xí)如何編碼很容易——尤其是在 JavaScript 中。一旦你讓事情運(yùn)轉(zhuǎn)起來(lái),我們往往不會(huì)回頭看看我們?nèi)绾巫屖虑樽兊酶谩?/span>
          我們一路向前、向前,直到下一個(gè)項(xiàng)目開(kāi)始和功能發(fā)布。我們不知疲倦地寫(xiě)代碼,我們將所有知道的知識(shí)來(lái)完成我們需要工作的內(nèi)容,好吧,開(kāi)始工作。
          多年來(lái),我從各個(gè)地方學(xué)習(xí)到了一些東西。以下是我讓代碼看起來(lái)更好,閱讀更好的 7 大 JavaScript 技巧。
          1、… 點(diǎn)差運(yùn)算符
          事實(shí)證明,spread ... 運(yùn)算符仍在 JavaScript 新手圈子中大放光彩。
          什么是點(diǎn)差運(yùn)算符?它是如何工作的?這是一個(gè)快速演練。
          你有一個(gè)需要放置在數(shù)組中的可迭代對(duì)象。然而,你不知道這個(gè)可迭代對(duì)象的最終長(zhǎng)度——或者你只是懶得手動(dòng)把它全部寫(xiě)出來(lái)。
          這就是 spread ... 操作符的用武之地。
          它會(huì)自動(dòng)將可迭代對(duì)象放入數(shù)組中。
          這里有一些代碼可以幫助你理解它:
          let abc = ['apple', 'bananas', 'cherries', 'dragon fruit'];let abc_spread = [...abc]console.log(abc_spread);// this will return:// ['apple', 'bananas', 'cherries', 'dragon fruit'];

          讓我們?cè)倏匆粋€(gè)例子:

          const PREFIX = '$';let message = '$kick ivan89234 bot0298 fake122  ';function kick(){
          const [CMD_NAME, ...args] = message .trim() .substring(PREFIX.length) .split(/\s+/);
          console.log(CMD_NAME); console.log(args);

          }kick();// console.log() will return// "kick"// ["ivan89234", "bot0298", "fake122"]

          與嘗試遍歷所有內(nèi)容然后手動(dòng)將其放入數(shù)組中相比,使用展開(kāi)運(yùn)算符更容易、更高效且更不麻煩。

          2、遞歸

          遞歸基本上就像循環(huán)中的循環(huán),但沒(méi)有嵌套。它無(wú)限期地調(diào)用自己,直到調(diào)用“escape”子句。

          下面是一個(gè)例子:

          function weight(x, n)   if(n == 1return x; //the escape clause   return x * weight(x, n -1); //the recursion}console.log('Tibbers weighs '             + weight(2, 5)             + ' pounds after eating 5 pieces of cheese' );

          遞歸和循環(huán)之間的區(qū)別在于遞歸是自包含的,并根據(jù)輸入產(chǎn)生特定的輸出。循環(huán)線(xiàn)性運(yùn)行并要求執(zhí)行每個(gè)連續(xù)以產(chǎn)生結(jié)果。

          3、使用日志級(jí)別

          console.log 不僅僅是 console.log。日志級(jí)別使日志記錄更加容易,并提醒你注意重要的事情。它還會(huì)在控制臺(tái)中直觀地分解你的日志,從而更輕松地掃描你需要的信息。

          以下是完整列表:

          console.log("hello world")console.warn("this is a warning")console.error("this is an error")console.info("this is info")console.debug("this is debug")console.trace("show trace")

          這是它的實(shí)際外觀:

          4、布爾變量的語(yǔ)言

          雙重否定可能令人困惑。通過(guò)始終將你的布爾語(yǔ)言假設(shè)設(shè)為真,讓事情變得簡(jiǎn)單。

          例如:

          const isInvalidKey = apiKey === nullif(isInvalidKey){}

          上面是一個(gè)糟糕的代碼語(yǔ)言模式,因?yàn)殡m然看起來(lái)很簡(jiǎn)單,但當(dāng)你想用 ! 反轉(zhuǎn)它時(shí)會(huì)讓人困惑。

          if(!isInvalidKey){}

          這是一個(gè)更好的寫(xiě)法:

          const isValidKey = apiKey != nullif(!isValidKey){}

          一般來(lái)說(shuō),沒(méi)有人喜歡閱讀雙重否定,因?yàn)槟惚黄扔?jì)算預(yù)期的結(jié)果是什么。一旦你開(kāi)始使用否定詞來(lái)描述布爾值,就不再是簡(jiǎn)單的“是”或“否”答案。

          5、對(duì)象而不是參數(shù)列表

          參數(shù)列表的問(wèn)題是它們必須按特定順序排列。但是,如果你使用對(duì)象,則更容易傳入可選參數(shù),并且順序不再重要。

          與參數(shù)變量列表相比,通過(guò)對(duì)象傳遞的內(nèi)容也更容易閱讀和理解。

          下面是一個(gè)例子:

          function getItem(price, quantity, name, description) {}
          getItem(15, undefined, ‘bananas’, ‘fruit’)

          這是重構(gòu)的版本:

          function getItem(args) {    const {price, quantity, name, description} = args}
          getItem({ name: 'bananas', price: 10, quantity: 1, description: 'fruit})

          6、if/else 

          if/else 語(yǔ)句很棒。

          在大多數(shù)情況下,如果 return 執(zhí)行完全相同的工作,則不需要 if/else 語(yǔ)句。

          這就是我的意思。看看下面的例子:

          function someCode(){       if(someBoolean){       return something;   }else{       return anotherthing;   }  }

          實(shí)際上,這也會(huì)產(chǎn)生同樣的影響:

          function someCode(){       if(someBoolean){       return something;   }   return anotherthing; }

          返回的目的是結(jié)束程序。如果無(wú)論如何都沒(méi)有滿(mǎn)足 if 條件,那么編寫(xiě) else 語(yǔ)句就變得多余了。

          7、捕捉錯(cuò)誤

          看看下面的例子:

          'use strict';...const fakeAPI = function(callback){    request(`https://someapi.com/api`,             {json: true},             (err, res, body) => {          if(res){                    //do something                }else{                    callback(err)                }    })}

          假設(shè)你的 API 將始終有效。它可能會(huì)拋出一個(gè)錯(cuò)誤并返回一個(gè) res 并且我們永遠(yuǎn)不會(huì)知道這個(gè)錯(cuò)誤。

          下面是查看相同代碼的不同方式:

          'use strict';...const fakeAPI = function(callback){    request(`https://somesite.com/api`,             {json: true},             (err, res, body) => {          if(err) return callback(err)          //rest of your code to deal with res    })}

          你總是假設(shè)最壞的情況,所以你把你的錯(cuò)誤放在第一位,這樣它就不會(huì)在沉默中失敗。

          總結(jié)

          這些是我最喜歡的,也是我經(jīng)常向開(kāi)發(fā)人員提倡和談?wù)揓avaScript 的 7 大技巧。這不是一切,而是一個(gè)好的起點(diǎn),尤其是當(dāng)你重構(gòu)代碼或致力于使代碼更易于閱讀和維護(hù)時(shí)。

          感謝您的閱讀,我希望您發(fā)現(xiàn)這篇文章很有用。 


          往期干貨

           26個(gè)經(jīng)典微信小程序+35套微信小程序源碼+微信小程序合集源碼下載(免費(fèi))

           干貨~~~2021最新前端學(xué)習(xí)視頻~~速度領(lǐng)取

           前端書(shū)籍-前端290本高清pdf電子書(shū)打包下載


          點(diǎn)贊和在看就是最大的支持??

          瀏覽 37
          點(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>
                  草久在线观看 | 天天爽天天日 | 一级黄色强奸黑人视频 | 欧美精品亚洲精品日韩已满 | 夏目あきら被续侵犯7天 |