1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        7個讓你的代碼更出色的JavaScript小技巧

        共 3725字,需瀏覽 8分鐘

         ·

        2021-08-05 19:25

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

        翻譯 | 小愛


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

        讓我們再看一個例子:

        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)容然后手動將其放入數(shù)組中相比,使用展開運算符更容易、更高效且更不麻煩。

        2、遞歸

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

        下面是一個例子:

        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)線性運行并要求執(zhí)行每個連續(xù)以產(chǎn)生結(jié)果。

        3、使用日志級別

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

        以下是完整列表:

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

        這是它的實際外觀:

        4、布爾變量的語言

        雙重否定可能令人困惑。通過始終將你的布爾語言假設設為真,讓事情變得簡單。

        例如:

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

        上面是一個糟糕的代碼語言模式,因為雖然看起來很簡單,但當你想用 ! 反轉(zhuǎn)它時會讓人困惑。

        if(!isInvalidKey){}

        這是一個更好的寫法:

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

        一般來說,沒有人喜歡閱讀雙重否定,因為你被迫計算預期的結(jié)果是什么。一旦你開始使用否定詞來描述布爾值,就不再是簡單的“是”或“否”答案。

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

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

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

        下面是一個例子:

        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 語句很棒。

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

        這就是我的意思??纯聪旅娴睦樱?/span>

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

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

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

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

        7、捕捉錯誤

        看看下面的例子:

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

        假設你的 API 將始終有效。 它可能會拋出一個錯誤并返回一個 res 并且我們永遠不會知道這個錯誤。

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

        '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    })}

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

        總結(jié)

        這些是我最喜歡的,也是我經(jīng)常向開發(fā)人員提倡和談論JavaScript 的 7 大技巧。 這不是一切,而是一個好的起點,尤其是當你重構(gòu)代碼或致力于使代碼更易于閱讀和維護時。

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


        學習更多技能

        請點擊下方公眾號


        瀏覽 53
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

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

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            日韩18禁网站 | 国产丝袜足交视频 | 美女视频黄特级大片 | 国产精品久久久久久久久久久易记 | 插插插插插插插插色域综合网 | 国产操屄视频 | 香蕉插逼 | 丁香五月婷婷色爱 | 做爱免费网站在线高清观看 | 日本无码激情 |