值得了解的幾個實用JavaScript優化小技巧

在工作中我們經常可以通過一些小細節來增加代碼可讀性 , 讓代碼看起來更加優雅 。 本篇文章就來給大家分享幾個一看就會的實用JavaScript優化小技巧 , 希望對大家有所幫助!

值得了解的幾個實用JavaScript優化小技巧

文章插圖

「難度:?」 「推薦閱讀時長:5min
正片減少if...else面條代碼
    一旦當我們寫到超過兩個if...else的函數的時候就該想想是否有更好的優化方法 。 【相關推薦:javascript學習教程】比如現在需要讓我們根據名稱計算出麥某勞的食品價格 , 你可能會這么做 。

值得了解的幾個實用JavaScript優化小技巧

文章插圖

    這樣的寫法會讓函數體有很多的條件判斷語句 , 而當我們想下次增加一個商品的時候就需要修改函數內的邏輯增加一個if...else語句 , 這一定程度上也違反了開閉原則,當我們需要增加一個邏輯的時候要盡量通過擴展軟件實體來解決需求變化 , 而不是通過修改已有的代碼來完成變化 。 這是很經典的優化方式 , 我們可以使用一個類似Map機構的數據來保存所有商品 , 這里我們直接建立一個對象來存儲 。

值得了解的幾個實用JavaScript優化小技巧

文章插圖

    這樣我們下次需要再增加一個商品時就不需要改動getPrice的邏輯了 , 當然了這里其實更多人喜歡直接在用的地方直接使用foodMap , 我這里只是簡單舉了個例子表述這個思路 。 那么這時候就有同學會問了 , 如果我不想key只用字符串呢 , 這時候你就可以用到new Map了 , 思路也是差不多的 , 額外擴展一個實體來存儲變化 。
管道操作取代冗余循環
    有這么一個麥某勞食物列表

值得了解的幾個實用JavaScript優化小技巧

文章插圖

    如果你想找出屬于套餐1的食物 , 你會怎么找呢?上面這種是我們以前經常使用的方法 , 顯然我們替換成使用filtermap來取代for循環不僅可以使代碼更精簡 , 還可以使語義更加明確 , 這樣我們一下就可以看出是先對數組過濾重組 。

值得了解的幾個實用JavaScript優化小技巧

文章插圖

find取代冗余循環
    還是上面的例子 , 如果我們要在這個食品對象數組中按照屬性值查找特定的食物時 , find的用處就出來了 。

值得了解的幾個實用JavaScript優化小技巧

文章插圖

includes取代冗余循環
    和上面兩個細節類似的這些都是既有的函數也就是不用我們重新寫的內置函數 , 巧用它會節省很多時間 。 眾所周知 , 一碗康某傅老壇酸菜牛肉面有酸菜 , 面 , 牛肉粒 , 煙頭和腳皮組成 , 那我們想用函數證實這個面里面是否有腳皮我們怎么寫會比較簡潔呢?

值得了解的幾個實用JavaScript優化小技巧

文章插圖

    同樣的 , 不止是康某傅的酸菜牛肉面可以這樣耍 , 所有類似的在數組里面找到特定元素的操作都可以使用includes函數來調用 。
result返回值
    我們通常在寫一些擁有返回值的函數的時候常常會以返回值變量命名而糾結 , 甚至對于一些長函數的時候還不使用變量而是直接return , 這樣的習慣其實是不好的 , 因為等我們下次再去參照這段代碼的時候還需要重新捋清邏輯 。 通常的 , 在一個小函數中 , 我們可以使用result作為返回值 。

值得了解的幾個實用JavaScript優化小技巧

文章插圖

提前返回
    然而上面用result作為返回值并不適用于所有情況 , 往往有些時候我們需要提前結束函數體來避免后面的同事閱讀多余的程序 。
    如下的例子中當我們selectedKey不存在的時候應該立即return , 這樣就不用繼續閱讀下面的代碼 , 否則面對更復雜的函數時會增加很多的閱讀成本 。

值得了解的幾個實用JavaScript優化小技巧

文章插圖

保持對象完整