在JavaScript中使用对象来优化if/else和switch

简介: 用JavaScript编写复杂的条件总是有可能创建一些相当混乱的代码,很长列表的if/else语句或switch会使代码变得臃肿。那么如何去优化很多if/else或者switch的代码呢?同时需要避免过多使用if/else或者switch。对象字面量能够帮忙我们写出易读的代码,本文就跟大家分享一下。

image.png

用JavaScript编写复杂的条件总是有可能创建一些相当混乱的代码,很长列表的if/else语句或switch会使代码变得臃肿。那么如何去优化很多if/else或者switch的代码呢?同时需要避免过多使用if/else或者switch。对象字面量能够帮忙我们写出易读的代码,本文就跟大家分享一下。

举例来说,假设有一个函数,该函数需要根据输入的比较运算符,获取该运算符的读法。使用if/else语句,它看起来像这样:

本文的实例仅用于说明问题,可能实现的方法不是最佳。

function getComparisonTitle(strOperator) {
    if (strOperator === ">") {
        return "大于";
    } else if (strOperator === ">=") {
        return "大于等于";
    } else if (strOperator === "<") {
        return "小于";
    } else if (strOperator === "<=") {
        return "小于等于";
    } else {
        return "等于";
    }
}

上面这段代码看起来臃肿,并且可读性也不好,使用switch,可以是这样的:

function getComparisonTitle(strOperator) {
    let title = "";
    switch (strOperator) {
        case ">":
            title = "大于";
            break;
        case ">=":
            title = "大于等于";
            break;
        case "<":
            title = "小于";
            break;
        case "<=":
            title = "小于等于";
            break;
        default:
            title = "等于";
            break;
    }
    return title;
}

代码看起来比之前稍微好一点,但是switch容易导致程序错误,并且代码可读性仍然不高。

开始优化

上面的情况可以使用对象结构来实现,如下:

function getComparisonTitle(strOperator) {
    const operators = {
        ">": "大于",
        ">=": "大于等于",
        "<": "小于",
        "<=": "小于等于",
        "==": "等于",
    };
    return operators[strOperator];
}

使用对象,让代码看起更加易读,更简洁。在项目过程中特别是用到switch的建议使用对象字面量的方式来优化。

通常项目中又根据不同的情况调用不同的方法,也是可以使用同样的方式,下面列一个简单的例子:

function calculate(num1, num2, action) {
    const actions = {
        add: (a, b) => a + b,
        subtract: (a, b) => a - b,
        multiply: (a, b) => a * b,
        divide: (a, b) => a / b,
    };
    return typeof actions[action] === "function"
        ? actions[action](num1, num2)
        : "action未定义";
}

上面的函数实现简单的运算。

相关文章
|
20天前
|
存储 JavaScript 索引
js开发:请解释什么是ES6的Map和Set,以及它们与普通对象和数组的区别。
ES6引入了Map和Set数据结构。Map的键可以是任意类型且有序,与对象的字符串或符号键不同;Set存储唯一值,无重复。两者皆可迭代,支持for...of循环。Map有get、set、has、delete等方法,Set有add、delete、has方法。示例展示了Map和Set的基本操作。
23 3
|
22天前
|
JavaScript 前端开发 开发者
JavaScript的`Math`对象
【4月更文挑战第21天】JavaScript的`Math`对象
18 3
|
2天前
|
JavaScript 前端开发
在JavaScript中,函数原型(Function Prototype)是一个特殊的对象
JavaScript中的函数原型是一个特殊对象,它为所有函数实例提供共享的方法和属性。每个函数在创建时都有一个`prototype`属性,指向原型对象。利用原型,我们可以向所有实例添加方法和属性,实现继承。例如,我们定义一个`Person`函数,向其原型添加`greet`方法,然后创建实例`john`和`jane`,它们都能调用这个方法。尽管可以直接在原型上添加方法,但推荐在构造函数内部定义以封装数据和逻辑。
8 2
|
2天前
|
JavaScript 前端开发
JavaScript 提供了多种方法来操作 DOM(文档对象模型)
【5月更文挑战第11天】JavaScript 用于DOM操作的方法包括获取元素(getElementById, getElementsByClassName等)、修改内容(innerHTML, innerText, textContent)、改变属性、添加/删除元素(appendChild, removeChild)和调整样式。此外,addEventListener用于监听事件。注意要考虑兼容性和性能当使用这些技术。
6 2
|
6天前
|
存储 JavaScript 前端开发
JavaScript对象方法详解
JavaScript对象方法详解
15 1
|
7天前
|
JavaScript
js多维数组去重并使具有相同属性的对象数量相加
js多维数组去重并使具有相同属性的对象数量相加
10 1
|
13天前
|
JavaScript 前端开发 IDE
【JavaScript与TypeScript技术专栏】使用TypeScript优化JavaScript应用性能
【4月更文挑战第30天】本文探讨了如何使用TypeScript优化JavaScript应用性能。TypeScript通过静态类型检查、更好的编译器优化和IDE支持提升代码稳定性和开发效率。利用类型注解、泛型、类与继承以及枚举和常量,开发者能构建高效、灵活和健壮的代码。逐步将TypeScript引入现有JavaScript项目,并通过案例分析展示性能提升效果。随着TypeScript社区的发展,它将在Web开发性能优化中扮演更重要角色。
|
14天前
|
前端开发 JavaScript 数据安全/隐私保护
前端javascript的DOM对象操作技巧,全场景解析(二)
前端javascript的DOM对象操作技巧,全场景解析(二)
|
14天前
|
移动开发 缓存 JavaScript
前端javascript的DOM对象操作技巧,全场景解析(一)
前端javascript的DOM对象操作技巧,全场景解析(一)
|
14天前
|
缓存 编解码 自然语言处理
前端javascript的BOM对象知识精讲
前端javascript的BOM对象知识精讲