JavaScript - 我应该在抛出异常的“if”之后写“else”吗?

时间:2013-12-13 04:13:36

标签: javascript

哪种结构更好用?如果我总是在if语句中抛出异常,那么实际上if块之后的代码将永远不会被执行,因此不需要else。但另一方面,块不应该同时执行,所以使用else可能是一种好习惯吗?

版本1

if (!this.regions[region]) {
    throw 'Component ignored: region ' + region + 'does not exists';
}
else {
    ....            
}

版本2

if (!this.regions[region]) {
        throw 'Component ignored: region ' + region + 'does not exists';
}
......    

3 个答案:

答案 0 :(得分:4)

不需要else子句,因为它是否存在没有区别。 if块之后的代码仅在if语句为假时才执行,因为如果它是真的,那么它会抛出异常并且永远不会超过if

这非常类似于通常使用的类似内容:

function doSomething(a, b) {
   if (!a || b < 2) {
       return false;
   }
   // more code here
   return true;
}

同样,不需要else语句,因为如果代码if,代码只会超出falsey语句,所以剩下的所有代码都已else

您可以使用else,但这不是必需的,也不会添加任何功能。我宁愿不在这些情况下使用else,因为它只会导致更多的代码缩进而不是需要。

答案 1 :(得分:2)

版本2称为“短路逻辑”。如果出现问题,请中止。这完全有效。

如果达到throw语句,throw下面的代码将无法执行。

答案 2 :(得分:-1)

如果与else一起使用,它将仅在表达式不匹配的情况下执行else

但是如果不使用else,它将执行表达式并在if代码之后执行。 此外,即使if之后表达式不匹配或匹配,也会执行。