停止使用 if else

2025-05-26

停止使用 if else

最近,我接到一个前端岗位的作业,需要在家完成一个类似仪表盘的东西。我觉得自己做的一切都对,但最终还是被拒了,一部分原因是我的粗心,一部分原因是我的代码。我到处都用了太多 if/else 语句!而且我当时也不懂这些。但现在我懂了,所以想在这里跟大家分享一下。

大多数人在需要处理条件逻辑时都会使用 if/else 和 switch 语句。虽然偶尔处理一两个条件逻辑可能不错,但使用多个 if else 语句或大型 switch 语句会使代码看起来非常难看,可读性较差,而且容易出错。

function whoIsThis(character) {
    if (character.toLowerCase() === 'naruto') {
        return `Hokage`
    } else if (character.toLowerCase() === 'sasuke') {
        return `Konoha's Strongest Ninja`
    } else if (character.toLowerCase() === 'isshiki') {
        return `Otsutsuki being`
    } else if (character.toLowerCase() === 'boruto') {
        return `Naruto and Hinata's son`
    }
}
whoIsThis('')
Enter fullscreen mode Exit fullscreen mode

您会看到,我们通过编写多个 console.logs 和 if 语句重复了很多次。

但是有一种面向对象的方法可以做到这一点,那就是使用对象。
我们不用编写 if else 代码块,而是定义一个对象,该对象包含我们在比较中使用的值作为键,并将我们返回的值作为对象的值,如下所示:

function whoIsThis(character) {
    const listOfCharacters = {
        'naruto': `Hokage`,
        'sasuke': `Konoha's Strongest Ninja`,
        'isshiki': `Otsutsuki being`,
        'boruto': `Naruto and Hinata's son`
    }

    return listOfCharacters[character] ?? `Please provide a valid character name`
}
Enter fullscreen mode Exit fullscreen mode

通过使用对象,我们能够创建一种字典来查找,而无需使用多个 if-else 语句。

我们也可以通过使用Map对象而不是对象来改进这一点。Map 与普通对象不同:

  • 它们记得原来的插入顺序
  • 与对象不同,我们可以使用任何类型的数据作为键/值,而不仅仅是字符串、数字和符号。
function whoIsThis(character){
const mapOfCharacters = new Map([
['naruto', `Hokage`],
        ['sasuke', `Konoha's Strongest Ninja`],
        ['isshiki', `Otsutsuki being`],
        ['boruto', `Naruto and Hinata's son`]
])
return mapOfCharacters.get(character) ?? `Please provide a valid character name`
}
Enter fullscreen mode Exit fullscreen mode

感谢您阅读这篇短文,如果您喜欢它,您可以通过https://www.buymeacoffee.com/rishavjadon支持我的工作。

文章来源:https://dev.to/rjitsu/stop-using-if-else-264o
PREV
2021 年最佳 VsCode 暗黑主题 🚀 1. Celestial 2. Radical 3. Just Black 4. After Dark 5. Panda Theme 6. Andromeda 7. Blueberry 暗黑主题 8. merko 的绿色主题
NEXT
开始使用 Typescript 和 React Hooks