国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

JavaScript如何優化邏輯判斷代碼詳解

瀏覽:2日期:2023-06-02 18:42:33
前言

我們日常使用到的邏輯判斷語句有 if...else...、switch...case...、do...while...等。

在簡單場景下,我們可能對這些語法的性能沒有什么感覺,但當遇到復雜的業務場景時,如果處理不善,就會出現大量的邏輯嵌套,可讀性差并且難以擴展。

千里之行始于足下,編寫高可維護性和高質量的代碼,我們就需要從細節處入手,我們今天主要討論 JavaScript 中如何優化邏輯判斷代碼。

嵌套層級優化

function supply(fruit, quantity) { const redFruits = [’apple’, ’strawberry’, ’cherry’, ’cranberries’]; // 條件 1: 水果存在 if (fruit) {// 條件 2: 屬于紅色水果if (redFruits.includes(fruit)) { console.log(’紅色水果’); // 條件 3: 水果數量大于 10 個 if (quantity > 10) {console.log(’數量大于 10 個’); }} } else {throw new Error(’沒有水果啦!’); }}

通過上面這個例子,我們可以看到:判斷流程中規中矩,符合現實世界的映射。但是,因代碼層層嵌套,導致閱讀和維護都存在困難。

如果傳入了 fruit 參數,則每次執行都至少需要經過兩步 if 判斷,在性能上也存在問題。

我們來對上面的代碼進行一下優化處理:

function supply(fruit, quantity) { const redFruits = [’apple’, ’strawberry’, ’cherry’, ’cranberries’]; if (!fruit) throw new Error(’沒有水果啦’); // 條件 1: 當 fruit 無效時,提前處理錯誤 if (!redFruits.includes(fruit)) return; // 條件 2: 當不是紅色水果時,提前 return console.log(’紅色水果’); // 條件 3: 水果數量大于 10 個 if (quantity > 10) {console.log(’數量大于 10 個’); }}

這里主要對嵌套層級做了優化,提前終止掉了不符合的條件,將三層嵌套減少到了一層,簡化了代碼結果結構,增強了可閱讀性。

多條件分支的優化

相信我們很多人對下面這種代碼不陌生吧?(想想剛開始寫代碼那會啊)

function pick(color) { // 根據顏色選擇水果 if (color === ’red’) {return [’apple’, ’strawberry’]; } else if (color === ’yellow’) {return [’banana’, ’pineapple’]; } else if (color === ’purple’) {return [’grape’, ’plum’]; } else {return []; }}

我們需要知道一點原則:if else 更適合于條件區間判斷,而 switch case 更適合于具體枚舉值的分支判斷。

我們使用 switch...case...進行一下改寫:

function pick(color) { // 根據顏色選擇水果 switch (color) {case ’red’: return [’apple’, ’strawberry’];case ’yellow’: return [’banana’, ’pineapple’];case ’purple’: return [’grape’, ’plum’];default: return []; }}

switch...case... 優化之后的代碼看上去格式整齊,思路很清晰,但還是很冗長。繼續優化:

借助 Object 的 {key: value} 結構,我們可以在 Object 中枚舉所有的情況,然后將 key 作為索引,直接通過 Object.key 或者 Object[key] 來獲取內容:

const fruitColor = { red: [’apple’, ’strawberry’], yellow: [’banana’, ’pineapple’], purple: [’grape’, ’plum’],}function pick(color) { return fruitColor[color] || [];}

使用 Map 數據結構,真正的(key, value) 鍵值對結構:

const fruitColor = new Map() .set(’red’, [’apple’, ’strawberry’]) .set(’yellow’, [’banana’, ’pineapple’]) .set(’purple’, [’grape’, ’plum’]);function pick(color) { return fruitColor.get(color) || [];}

優化之后,代碼更簡潔、更容易擴展。

為了更好的可讀性,還可以通過更加語義化的方式定義對象,然后使用 Array.filter 達到同樣的效果:

const fruits = [ {name: ’apple’, color: ’red’}, {name: ’strawberry’, color: ’red’}, {name: ’banana’, color: ’yellow’}, {name: ’pineapple’, color: ’yellow’}, {name: ’grape’, color: ’purple’}, {name: ’plum’, color: ’purple’}];function pick(color) { return fruits.filter(f => f.color == color);}總結

上面使用的例子和手段都比較初級,但是其中的思想卻值得我們細品,希望大家能夠有所收獲!

到此這篇關于JavaScript如何優化邏輯判斷代碼的文章就介紹到這了,更多相關JavaScript優化邏輯判斷代碼內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 欧美一级毛片免费播放器 | 国产一区中文字幕在线观看 | 亚洲视频一区在线 | 国内精品视频九九九九 | 世界一级毛片 | 国产一级内谢a级高清毛片 国产一级片毛片 | 色吊丝在线观看国产 | 一色屋色费精品视频在线观看 | 亚洲欧美日韩精品久久亚洲区色播 | 日韩freesex呦交 | 国产免费高清在线精品一区 | 欧美一级毛片免费观看 | 美女把张开腿男生猛戳免费视频 | 久久免费公开视频 | 国产精品久久福利网站 | 亚洲精品在线网站 | 久久污| 91久久另类重口变态 | 九九黄色影院 | 精品国产精品 | 欧美日韩一区二区三区视频播 | 成 人 黄 色 视频 免费观看 | 日韩国产精品欧美一区二区 | 视频在线二区 | 香蕉久久夜色精品国产2020 | 亚洲一区二区欧美 | 视频一区欧美 | 91小视频在线观看免费版高清 | 国产午夜精品不卡视频 | 成人a网站 | 亚洲国产精久久久久久久 | 无码精品一区二区三区免费视频 | 成 人免费视频l免费观看 | 高清午夜看片a福利在线观看琪琪 | 国产免费一区二区三区在线 | 亚洲视频在线观看免费 | 美女视频永久黄网站免费观看韩国 | 亚洲国产夜色在线观看 | 亚洲香蕉久久一区二区 | 一级做a爰片久久毛片潮喷 一级做a爰片久久毛片美女 | 精品国产一二三区 |