LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

对象映射(Object Literal)和 Map 数据结构:抛弃 switch,让JavaScript代码更简洁

admin
2025年5月5日 12:4 本文热度 56

我们经常需要根据不同的条件执行不同的逻辑,传统上,if-else 和 switch 语句是处理这类场景的常用方式。然而,随着现代 JavaScript 的发展,出现了更优雅、更简洁的替代方案:对象映射(Object Literal)和 Map 数据结构。

传统 switch 语句的问题

首先,让我们看看传统 switch 语句的典型用法:

这种写法存在几个问题:

  1. 冗长且重复 - 每个 case 都需要写 case 关键字和 return 或 break 语句
  2. 容易出错 - 忘记 break 语句会导致意外的 fall-through 行为
  3. 难以维护 - 添加或修改分支时,需要在大块代码中仔细添加
  4. 可读性较差 - 尤其当每个 case 分支包含较多逻辑时

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

对象映射是替代简单 switch 语句的最直接方式:

处理复杂逻辑

如果每个分支包含更复杂的逻辑,可以将函数作为对象的值:

使用 Map 数据结构

ES6 引入的 Map 数据结构提供了比对象字面量更强大的功能,特别适合以下场景:

  1. 键不限于字符串,可以是任何类型(包括对象、函数等)
  2. 需要频繁添加/删除键值对
  3. 需要保持插入顺序
  4. 需要直接获取映射的大小

用法示例

函数映射和链式操作

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,可以让我们编写出更优雅、更易维护的代码。


阅读原文:原文链接


该文章在 2025/5/6 12:16:02 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved