1. 10 個實用的 JavaScript 技巧

        共 2704字,需瀏覽 6分鐘

         ·

        2021-10-15 03:26



        前言

        ?

        由于近年來推出了許多 JavaScript 框架,它已成為開發(fā) Web 應用程序的明確選擇。以下是一些最流行的 JavaScript 框架

        ?
        • ReactJS
        • VueJS
        • AngularJS
        • Express.JS
        • Svelte
        • Backbone.JS
        • jQuery

        考慮到這一點,是時候看看一些易于實現并保證提高代碼可讀性(和完整性)的實用技巧了。

        1. 將參數作為對象傳遞

        這種傳遞參數的方式有很多好處:

        • 參數的順序不再重要,讓你可以專注于交付高質量的代碼,而不是反復檢查函數定義。
        • 自動完成變得更容易,因為 IDE將專注于你提供的特定參數。
        • 此方法以清晰的方式傳達意圖,因為函數調用指定了每個屬性的值。
        • 有利于大型項目的維護

        使用生成器創(chuàng)建順序ID

        隨著 ES6 中引入的生成器,生成無限的、不可重復的序列從未如此簡單!如果你不知道生成器是什么,它們是通過使用yield關鍵字按需處理和返回數據來使用惰性求值的函數。

        看起來生成器函數會在無限循環(huán)中消耗 CPU 周期,但是,生成器描述了一個狀態(tài)機,允許通過提供的代碼(通過后續(xù)的產量)發(fā)生到前向狀態(tài)的轉換。每當調用next方法時,這些轉換都會按需發(fā)生,因此稱為惰性求值!

        ?

        有了這個技巧,你不再需要依賴全局/類范圍的變量來記住狀態(tài)!

        ?

        3.用空格格式化JSON輸出

        一個簡單但非常有效的工具,通過在第三個參數中提供用于縮進的空格量來導出可讀的 JSON。

        第二個參數是替換器,它可以是控制字符串化過程的函數,也可以是數組,在這種情況下,它指示應包含在字符串化輸出中的屬性的名稱。

        4. 使用可選鏈操作符

        由于大多數瀏覽器都支持可選鏈接,現在可以更輕松地解析復雜對象。以前,開發(fā)人員會求助于使用短路或嵌套 if 語句來與 undefined 進行比較。

        現在,使用可選鏈運算符完成相同的驗證更容易(更干凈!)。更好的是,你甚至可以使用括號表示法將可選鏈接與表達式一起使用,或者,如果你有一個深度嵌套的對象,你可以堆疊可選鏈接運算符來檢查更深層次的屬性。

        5.利用解構賦值語法

        另一個快速簡便的技巧,它允許你從 JavaScript 對象中提取與你最相關的信息。

        使用解構語法,開發(fā)人員能夠快速將數組中的值或對象中的屬性解壓縮到指定的變量中。

        這種語法允許使用多種技巧,例如變量交換單行或僅解析返回對象中有意義的屬性。

        6. 使用擴展運算符淺拷貝對象(和數組?。?/span>

        隨著 JavaScript 中擴展語法的引入,現在擴展對象或數組并執(zhí)行復制變得比以往任何時候都容易。

        當你必須執(zhí)行反應或做出反應的天然狀態(tài)的管理,因為所有你需要做的就是復制當前狀態(tài)與對象字面這是特別有用的,修改你所選擇的屬性,并與所提供的狀態(tài)鉤改變狀態(tài)ü本身狀態(tài).

        這也是連接數組或使用單行合并對象的一種非常好的方法,而不必遍歷每個實例并手動合并。

        7. 使用 Set 從數組中刪除重復項

        一種使用簡單的單行從數組中刪除重復項的簡單但非常有效的方法。在這個例子中,我們還使用了最近展示的擴展運算符來擴展集合并構造一個數組。

        這個技巧適用于任何類型的值,它甚至可以處理 JavaScript 的一些奇怪的相等行為。

        你還可以使用集合從復雜對象的數組中刪除重復項。

        8.等待多個promise完成

        每當你需要啟動多個任務并等待它們完成時,這個技巧就會發(fā)揮作用。由于每個任務都是異步運行的,因此它們可以并行處理,并且一旦所有promise都得到解決,就可以使用返回的數據。

        請記住,如果單個promise被拒絕,Promise.all也會立即返回一個被拒絕的promise。

        如果你正在開發(fā)微服務架構并且需要盡快從多個端點獲取重要的非順序數據,則可以使用此技巧。

        一旦所有promise都解決了,Promise.all將返回一個promise,該promise解決了最初提供的promise結果的數組。

        你還可以像任何promise一樣指定then回調來處理結果。

        9. 使用 map 在數組中轉換值

        這可能是本文中最簡單的技巧之一,但它提供了一種非常優(yōu)雅的解決方案,用于將表示為字符串的數值數組轉換為 JavaScript 數字(所有 JavaScript 數字都是 64 位浮點數)。

        這利用了Array的map方法,并通過將Number作為參數傳遞,對于數組中的每個值,它將調用Number的構造函數并返回結果。

        10. 為代碼的執(zhí)行計時

        對于尋求提供高性能代碼的開發(fā)人員來說,這是一個無價的工具,time方法將計時器名稱作為參數,并期望通過調用timeEnd來滿足,其中提供了相同的計時器名稱。

        該timeEnd方法打印在兩個函數調用之間的毫秒所經過的時間,它允許程序員迅速觀察他們的代碼重構和輕松的瓶頸。

        這種方法比手動計算執(zhí)行時間要好得多,因為它是內置的,并且在現代瀏覽器中得到廣泛支持。

        參考文獻

        • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

        • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining

        • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

        • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

        • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set

        • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all

        • https://developer.mozilla.org/en-US/docs/Web/API/Console


        瀏覽 62
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

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

        手機掃一掃分享

        分享
        舉報
          
          

            1. 宝贝胸罩脱了让我揉你的胸动态图 | 国产午夜精品一区 | 国产亚洲欧美视频 | 牛牛在线视频 | 九色porny蝌蚪 |