哪种结构更好用?如果我总是在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';
}
......
答案 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
之后表达式不匹配或匹配,也会执行。