成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

拋棄 switch,讓 JavaScript 代碼更簡潔

開發
現代 JavaScript 為我們提供了多種工具來改進代碼質量,擁抱對象映射和 Map,可以讓我們編寫出更優雅、更易維護的代碼。?

我們經常需要根據不同的條件執行不同的邏輯,傳統上,if-else 和 switch 語句是處理這類場景的常用方式。然而,隨著現代 JavaScript 的發展,出現了更優雅、更簡潔的替代方案:對象映射(Object Literal)和 Map 數據結構。

傳統 switch 語句的問題

首先,讓我們看看傳統 switch 語句的典型用法:

這種寫法存在幾個問題:

  • 冗長且重復 - 每個 case 都需要寫 case 關鍵字和 return 或 break 語句
  • 容易出錯 - 忘記 break 語句會導致意外的 fall-through 行為
  • 難以維護 - 添加或修改分支時,需要在大塊代碼中仔細添加
  • 可讀性較差 - 尤其當每個 case 分支包含較多邏輯時

使用對象映射(Object Literal)替代 switch

對象映射是替代簡單 switch 語句的最直接方式:

處理復雜邏輯

如果每個分支包含更復雜的邏輯,可以將函數作為對象的值:

使用 Map 數據結構

ES6 引入的 Map 數據結構提供了比對象字面量更強大的功能,特別適合以下場景:

  • 鍵不限于字符串,可以是任何類型(包括對象、函數等)
  • 需要頻繁添加/刪除鍵值對
  • 需要保持插入順序
  • 需要直接獲取映射的大小

用法示例

函數映射和鏈式操作

Map 非常適合實現命令模式或策略模式:

classCalculator {
  constructor() {
    this.operations = newMap([
      ['+', (a, b) => a + b],
      ['-', (a, b) => a - b],
      ['*', (a, b) => a * b],
      ['/', (a, b) => a / b],
      ['%', (a, b) => a % b],
      ['', (a, b) => a  b]
    ]);
  }
  calculate(a, operator, b) {
    const operation = this.operations.get(operator);
    if (!operation) {
      throw new Error(`Unsupported operator: ${operator}`);
    }
    return operation(a, b);
  }
  // 擴展計算器功能
  addOperation(operator, fn) {
    this.operations.set(operator, fn);
      return this; // 支持鏈式調用
    }
  }

const calc = new Calculator()
  .addOperation('log', (a, b) =>Math.log(a) / Math.log(b));

console.log(calc.calculate(10, '+', 5)); // 15
console.log(calc.calculate(10, 'log', 10)); // 1

現代 JavaScript 為我們提供了多種工具來改進代碼質量,擁抱對象映射和 Map,可以讓我們編寫出更優雅、更易維護的代碼。

責任編輯:趙寧寧 來源: JavaScript
相關推薦

2025-03-03 12:00:00

JavaScriptfor 循環語言

2025-06-04 08:35:00

立即執行函數IIFEJavaScript

2025-04-03 09:27:35

JavaScript開發IIFE

2022-05-10 10:28:21

JavaScript代碼

2025-05-12 08:05:00

Ajaxfetch APIWeb

2024-11-11 17:00:27

字典壓縮Python代碼

2025-04-29 02:22:00

Python技巧CLI

2025-04-24 08:40:00

JavaScript代碼return語句

2025-06-06 09:14:47

switch對象映射條件判斷

2024-12-19 09:05:13

Python鏈式調用

2022-08-19 14:24:30

forPythonpythonic

2019-07-31 10:24:16

JavaScript瀏覽器口袋妖怪

2025-02-10 00:25:00

命令模式擴展機制系統

2017-06-14 18:09:02

ButterknifeAndroid

2022-08-28 19:03:18

JavaScript編程語言開發

2025-04-02 08:50:00

typeofJavaScript開發

2023-02-23 16:49:11

ES6技巧

2023-11-23 13:50:00

Python代碼

2023-03-09 15:45:36

ES6編碼技巧數組

2017-01-22 08:49:29

Android庫開源程序員數據
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲逼院 | 久久久精品视频免费看 | 亚洲高清视频在线观看 | wwww.xxxx免费| 青青伊人久久 | 久久夜视频 | 在线观看免费av网站 | 久久久女女女女999久久 | 日韩av一区二区在线观看 | 国产99久久精品一区二区永久免费 | 亚洲精品国产第一综合99久久 | 国产精品视频偷伦精品视频 | 日韩欧美在线不卡 | 国产一区二区三区视频 | 99热首页 | 自拍视频精品 | 99精品国产一区二区三区 | 欧美亚洲成人网 | 91国产视频在线观看 | 久久九九99| 国产小视频在线观看 | 一区二区三区免费在线观看 | 久久久久网站 | 日本久久www成人免 成人久久久久 | 久久免费高清视频 | 日本字幕在线观看 | 91精品国产91久久久久久密臀 | 成人精品一区亚洲午夜久久久 | 日韩精品在线看 | 免费视频一区 | 激情亚洲| 国产精品国产成人国产三级 | 久久av资源网 | 国产一区二区免费电影 | 亚洲国产一区在线 | 亚洲免费三级 | 中文字幕亚洲精品在线观看 | 日日操日日舔 | 黄色大片在线 | 日韩成人在线播放 | 毛片网站在线观看视频 |