去掉 if...else 的七种绝佳之法


去掉 if...else 的方法通常被称为 "优化" 或 "重构",取决于特定情境。在某些情况下,去掉 if...else 可以使代码更清晰、更简洁,但并非在所有情况下都是必要的。以下是一些在某些情境下替代 if...else 的方法:

  1. 使用三元运算符:

    // Before
    if (condition) {
        result = value1;
    } else {
        result = value2;
    }
    
    // After
    result = condition ? value1 : value2;
  2. 使用逻辑运算符:

    // Before
    if (condition) {
        result = value1;
    } else {
        result = value2;
    }
    
    // After
    result = condition && value1 || value2;

    注意:这种方式在某些情况下可能会导致不直观的行为,因此谨慎使用。

  3. 使用对象映射:

    // Before
    if (key === 'option1') {
        result = value1;
    } else if (key === 'option2') {
        result = value2;
    } else {
        result = defaultValue;
    }
    
    // After
    const options = {
        'option1': value1,
        'option2': value2,
    };
    result = options[key] || defaultValue;
  4. 使用函数映射:

    // Before
    if (condition) {
        result = func1();
    } else {
        result = func2();
    }
    
    // After
    const funcs = {
        true: func1,
        false: func2,
    };
    result = funcs[condition]();
  5. 使用数组:

    // Before
    if (index === 0) {
        result = value1;
    } else {
        result = value2;
    }
    
    // After
    const values = [value1, value2];
    result = values[index] || defaultValue;
  6. 使用 switch 语句:

    // Before
    if (day === 'Monday') {
        result = 'Working day';
    } else if (day === 'Saturday' || day === 'Sunday') {
        result = 'Weekend';
    } else {
        result = 'Other day';
    }
    
    // After
    switch (day) {
        case 'Monday':
            result = 'Working day';
            break;
        case 'Saturday':
        case 'Sunday':
            result = 'Weekend';
            break;
        default:
            result = 'Other day';
    }
  7. 使用函数式编程的思想:

    // Before
    if (condition) {
        result = modifyValue(value);
    } else {
        result = value;
    }
    
    // After
    result = condition ? modifyValue(value) : value;

请注意,上述方法的适用性取决于具体的情境和代码结构。在一些情况下,保留 if...else 语句可能更易读和清晰。


原文链接:codingdict.net