There's no "else if" in JS Grammar is not a joke...

2025-05-27

JS 中没有“else if”

语法不是开玩笑的......

语法不是开玩笑的......

确实,Javascript 的语法中没有 else if语句。

你之前用过几次?为什么现在还能用?

我们总是这样编码:


function wow(arg){

  if(arg === "dog"){
    return "LOVELY";
  }
  else if(arg === "cat"){
    return "CUTE";
  }
  else return "gimme an animal";
}

wow("cat");
//-> "CUTE"

Enter fullscreen mode Exit fullscreen mode

但实际发生的情况是这样的:


function wow(arg){

  if(arg === "dog"){
    return "LOVELY";
  }
  else {
    if(arg === "cat"){
        return "CUTE";
    }
    else return "gimme an animal";
  }
}

wow("cat");

Enter fullscreen mode Exit fullscreen mode

这里发生了什么事?

从字面上看,我们正在使用一些关于{}用途的隐式 JS 行为。

当我们使用else if语句时,我们省略了{}但是 Javascript 仍然有效,因为在这种情况下它不需要括号,就像在许多其他情况下一样!

...所以呢?

我写这篇文章并不是因为这件事真的很令人好奇

我写这篇文章是为了让你思考所有好的部分正确的编码方式,这迫使你以某种方式编写代码,有时这并不是最好的方式

关于隐式显式声明的内容有很多需要讨论,例如:强制、括号、分号......

但真理总是站在中间!

如果您只是遵循一些特定的规则...那么您就无法理解为什么要制定这些规则else if,而这应该让您思考一下。

有多少次,您编写了代码,因为有人告诉您这样做,但您却对此一无所知?

我敢打赌,很多

我并不是说我们不应该关心所有这些规则,也不是说我们应该了解所有的JS 文档。

我只是说,现在,你的职责是编写别人能够理解的好代码,并朝着这个方向努力……有些规则是可以的,但你应该知道为什么

因为某人擅长代码,并不意味着你必须遵循他的黄金法则

对他来说隐含的东西对你和其他许多人来说可能就是明确的。

如果您对该特定参数没有相同的了解(并且不可能对代码的每个部分都有完全相同的了解程度),那么您有两个选择:

  1. 按照他告诉你的去做...如果有效的话。
  2. 出去看看原因

始终关心好的部分,但首先,始终关心你的知识,不要仅仅按照规则编写代码。

最佳实践必须被许多人接受


思考
文章来源:https://dev.to/genta/theres-no-else-if-in-js--24f9
PREV
我的开源项目获得 2000 星 一些背景 今天发布
NEXT
HTML、CSS 和 JavaScript 的小技巧