在工作中我們經常可以透過一些小細節來增加程式碼可讀性,讓程式碼看起來更優雅。這篇文章就來跟大家分享幾個一看就會的實用JavaScript優化小技巧,希望對大家有幫助!
「難度:?」 「推薦閱讀時間:5min
」
正片
減少if...else麵條程式碼
- 一旦當我們寫到超過兩個
if ...else
的函數的時候就該想想是否有更好的最佳化方法。 【相關推薦:javascript學習教學】 - 例如現在需要讓我們根據名稱計算麥某勞的食品價格,你可能會這麼做。
- 這樣的寫法會讓函數體有很多的條件判斷語句,而當我們想下次增加一個商品的時候就需要修改函數內的邏輯增加一個
if...else
語句,這一定程度上也違反了開閉原則,當我們需要增加一個邏輯的時候要盡量透過擴展軟體實體來解決需求變化,而不是透過修改現有的程式碼來完成變更。 - 這是很經典的最佳化方式,我們可以使用一個類似
Map
機構的資料來保存所有商品,這裡我們直接建立一個物件來儲存。
- 這樣我們下次需要再增加一個商品時就不需要改動
getPrice
的邏輯了,當然了這裡其實更多人喜歡直接在用的地方直接使用foodMap
,我這裡只是簡單舉了個例子表達這個想法。 - 那麼這時候就有同學會問了,如果我不想
key
只用字串呢,這時候你就可以用到new Map
了,思路也是差不多的,額外擴充一個實體來儲存變化。
管道操作取代冗餘循環
- 有這麼一個麥某勞食物清單
- 如果你想找出屬於套餐1的食物,你會怎麼找呢?
- 上面這種是我們以前經常使用的方法,顯然我們替換成使用
filter
與map
來取代for
循環不僅可以使程式碼更精簡,還可以讓語意更加明確,這樣我們一下就可以看出是先對數組過濾
再重組
。
find取代冗餘循環
- 還是上面的例子,如果我們要在這個食品對象數組中依照屬性值找出特定的食物時,
find
的用處就出來了。
includes取代冗餘循環
- 和這些上面兩個細節類似的都是既有的函數也就是不用我們重新寫的內建函數,巧用它會節省很多時間。
- 眾所周知,一碗康某傅老壇酸菜牛肉麵有酸菜,面,牛肉粒, 煙頭和腳皮組成,那我們想用函數來確認這個面裡面有沒有腳皮我們怎麼寫會比較簡潔呢?
- 同樣的,不只康某傅的酸菜牛肉麵可以這樣耍,所有類似的在陣列裡面找到特定元素的運算都可以使用
includes
函數來呼叫。
result傳回值
- 我們通常在寫一些擁有傳回值的函數的時候常常會以傳回值變數命名而糾結,甚至對於一些長函數的時候還不使用變數而是直接
return
,這樣的習慣其實是不好的,因為等我們下次再去參照這段程式碼的時候還需要重新捋清邏輯。 - 通常的,在一個小函數中,我們可以使用
result
作為回傳值。
提前回傳
然而上面用
result
作為回傳值並不適用於所有情況,往往有些時候我們需要提前結束函數體來避免後面的同事閱讀多餘的程式。如下的例子中當我們
selectedKey
不存在的時候應該立即return
,這樣就不用繼續閱讀下面的程式碼,否則面對更複雜的函數時會增加很多的閱讀成本。
保持物件完整
- #經常在我們透過請求拿到後端回傳的資料會根據其中一些屬性來處理,如果需要處理的屬性少的時候很多同學會習慣使用第一種方法。
- 但其實這種習慣是不好的,因為當你無法確定這個函數以後還需不需要增加依賴屬性的時候應該保持物件的完整,就像我上篇文章提到的,學會擁抱變化,假如
getDocDetail
不只用到icon
和content
,可能以後還會有title
,date
等屬性,所以我們不如直接將完整物件傳入,不僅增加縮短參數清單還會讓程式碼更容易閱讀。
巧用運算子
- 當我們需要建立新變數時, 有時需要檢查為其值引用的變數是否為
null
或未定義時, 就可以使用簡單寫法。
寫在最後
- 首先還是很感謝大家看到這裡,這次的文章就分享到這裡,總結了幾個很基本的優化方法,希望可以幫到大家。
【相關影片教學推薦:web前端】
以上是值得了解的幾個實用JavaScript優化小技巧的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

Dreamweaver Mac版
視覺化網頁開發工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。