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

          10個(gè)實(shí)用的Javascript技巧

          共 2709字,需瀏覽 6分鐘

           ·

          2021-11-13 17:49



          前言

          ?

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

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

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

          1. 將參數(shù)作為對(duì)象傳遞

          這種傳遞參數(shù)的方式有很多好處:

          • 參數(shù)的順序不再重要,讓你可以專(zhuān)注于交付高質(zhì)量的代碼,而不是反復(fù)檢查函數(shù)定義。
          • 自動(dòng)完成變得更容易,因?yàn)?IDE將專(zhuān)注于你提供的特定參數(shù)。
          • 此方法以清晰的方式傳達(dá)意圖,因?yàn)楹瘮?shù)調(diào)用指定了每個(gè)屬性的值。
          • 有利于大型項(xiàng)目的維護(hù)

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

          隨著 ES6 中引入的生成器,生成無(wú)限的、不可重復(fù)的序列從未如此簡(jiǎn)單!如果你不知道生成器是什么,它們是通過(guò)使用yield關(guān)鍵字按需處理和返回?cái)?shù)據(jù)來(lái)使用惰性求值的函數(shù)。

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

          ?

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

          ?

          3.用空格格式化JSON輸出

          一個(gè)簡(jiǎn)單但非常有效的工具,通過(guò)在第三個(gè)參數(shù)中提供用于縮進(jìn)的空格量來(lái)導(dǎo)出可讀的 JSON。

          第二個(gè)參數(shù)是替換器,它可以是控制字符串化過(guò)程的函數(shù),也可以是數(shù)組,在這種情況下,它指示應(yīng)包含在字符串化輸出中的屬性的名稱(chēng)。

          4. 使用可選鏈操作符

          由于大多數(shù)瀏覽器都支持可選鏈接,現(xiàn)在可以更輕松地解析復(fù)雜對(duì)象。以前,開(kāi)發(fā)人員會(huì)求助于使用短路或嵌套 if 語(yǔ)句來(lái)與 undefined 進(jìn)行比較。

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

          5.利用解構(gòu)賦值語(yǔ)法

          另一個(gè)快速簡(jiǎn)便的技巧,它允許你從 JavaScript 對(duì)象中提取與你最相關(guān)的信息。

          使用解構(gòu)語(yǔ)法,開(kāi)發(fā)人員能夠快速將數(shù)組中的值或?qū)ο笾械膶傩越鈮嚎s到指定的變量中。

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

          6. 使用擴(kuò)展運(yùn)算符淺拷貝對(duì)象(和數(shù)組!)

          隨著 JavaScript 中擴(kuò)展語(yǔ)法的引入,現(xiàn)在擴(kuò)展對(duì)象或數(shù)組并執(zhí)行復(fù)制變得比以往任何時(shí)候都容易。

          當(dāng)你必須執(zhí)行反應(yīng)或做出反應(yīng)的天然狀態(tài)的管理,因?yàn)樗心阈枰龅木褪菑?fù)制當(dāng)前狀態(tài)與對(duì)象字面這是特別有用的,修改你所選擇的屬性,并與所提供的狀態(tài)鉤改變狀態(tài)ü本身狀態(tài).

          這也是連接數(shù)組或使用單行合并對(duì)象的一種非常好的方法,而不必遍歷每個(gè)實(shí)例并手動(dòng)合并。

          7. 使用 Set 從數(shù)組中刪除重復(fù)項(xiàng)

          一種使用簡(jiǎn)單的單行從數(shù)組中刪除重復(fù)項(xiàng)的簡(jiǎn)單但非常有效的方法。在這個(gè)例子中,我們還使用了最近展示的擴(kuò)展運(yùn)算符來(lái)擴(kuò)展集合并構(gòu)造一個(gè)數(shù)組。

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

          你還可以使用集合從復(fù)雜對(duì)象的數(shù)組中刪除重復(fù)項(xiàng)。

          8.等待多個(gè)promise完成

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

          請(qǐng)記住,如果單個(gè)promise被拒絕,Promise.all也會(huì)立即返回一個(gè)被拒絕的promise。

          如果你正在開(kāi)發(fā)微服務(wù)架構(gòu)并且需要盡快從多個(gè)端點(diǎn)獲取重要的非順序數(shù)據(jù),則可以使用此技巧。

          一旦所有promise都解決了,Promise.all將返回一個(gè)promise,該promise解決了最初提供的promise結(jié)果的數(shù)組。

          你還可以像任何promise一樣指定then回調(diào)來(lái)處理結(jié)果。

          9. 使用 map 在數(shù)組中轉(zhuǎn)換值

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

          這利用了Array的map方法,并通過(guò)將Number作為參數(shù)傳遞,對(duì)于數(shù)組中的每個(gè)值,它將調(diào)用Number的構(gòu)造函數(shù)并返回結(jié)果。

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

          對(duì)于尋求提供高性能代碼的開(kāi)發(fā)人員來(lái)說(shuō),這是一個(gè)無(wú)價(jià)的工具,time方法將計(jì)時(shí)器名稱(chēng)作為參數(shù),并期望通過(guò)調(diào)用timeEnd來(lái)滿足,其中提供了相同的計(jì)時(shí)器名稱(chēng)。

          該timeEnd方法打印在兩個(gè)函數(shù)調(diào)用之間的毫秒所經(jīng)過(guò)的時(shí)間,它允許程序員迅速觀察他們的代碼重構(gòu)和輕松的瓶頸。

          這種方法比手動(dòng)計(jì)算執(zhí)行時(shí)間要好得多,因?yàn)樗莾?nèi)置的,并且在現(xiàn)代瀏覽器中得到廣泛支持。

          參考文獻(xiàn)

          • 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


          歡迎關(guān)注~
          瀏覽 59
          點(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>
                  久久嫩草精品久久久久 | 亚洲黄在线观看 | 午夜大鸡巴 | 99在线播放 | 一级黄色视频日逼片 |