如果我们只对 javascript 中的 "if...else" 语句使用 "else" 块会怎样
What if we use only "else" block for "if...else" statement in javascript
我知道 javascript 中可以在没有“else”块的情况下使用“if”语句。但是如果我只需要一个“else”块呢?在这种情况下应该使用什么语法?
if (req.body[data].length <= maxlength[indx]); // <===== semicolon
else {
req.body[data] = 'ERROR: too long';
status = 404;
}
或
if (req.body[data].length <= maxlength[indx]) {} // <===== empty block
else {
req.body[data] = 'ERROR: too long';
status = 404;
}
ECMA stanadrt 对这个案例只字未提 (https://262.ecma-international.org/5.1/#sec-12.5)
反转逻辑似乎是这里最合理的选择。其实倒置逻辑也和代码的可读性有关,如果你把逻辑倒置放在开头,它们通常被称为Guard Clauses,这会大大提高可读性。您可以查看该主题。
澄清其他人的回答:
在你的具体情况下,你可以反转操作符,这样 <=
就会变成 >
。
在其他情况下,您可以使用 !
来实现您的目标。
if (req.body[data].length <= maxlength[indx]); // <===== semicolon
else {
req.body[data] = 'ERROR: too long';
status = 404;
}
应该变成
if (req.body[data].length > maxlength[indx]) {
req.body[data] = 'ERROR: too long';
status = 404;
}
这个想法是做与原始 post 中的条件相反的事情,它实现了只有一个 else
语句的相同目的。这样代码就更容易阅读和推理了。
遇到这种情况,我该怎么办?
if (!address.street && !address.postcode && !address.city && !address.country)
{ }
else {result = await geocode(address)}
我知道 javascript 中可以在没有“else”块的情况下使用“if”语句。但是如果我只需要一个“else”块呢?在这种情况下应该使用什么语法?
if (req.body[data].length <= maxlength[indx]); // <===== semicolon
else {
req.body[data] = 'ERROR: too long';
status = 404;
}
或
if (req.body[data].length <= maxlength[indx]) {} // <===== empty block
else {
req.body[data] = 'ERROR: too long';
status = 404;
}
ECMA stanadrt 对这个案例只字未提 (https://262.ecma-international.org/5.1/#sec-12.5)
反转逻辑似乎是这里最合理的选择。其实倒置逻辑也和代码的可读性有关,如果你把逻辑倒置放在开头,它们通常被称为Guard Clauses,这会大大提高可读性。您可以查看该主题。
澄清其他人的回答:
在你的具体情况下,你可以反转操作符,这样 <=
就会变成 >
。
在其他情况下,您可以使用 !
来实现您的目标。
if (req.body[data].length <= maxlength[indx]); // <===== semicolon
else {
req.body[data] = 'ERROR: too long';
status = 404;
}
应该变成
if (req.body[data].length > maxlength[indx]) {
req.body[data] = 'ERROR: too long';
status = 404;
}
这个想法是做与原始 post 中的条件相反的事情,它实现了只有一个 else
语句的相同目的。这样代码就更容易阅读和推理了。
遇到这种情况,我该怎么办?
if (!address.street && !address.postcode && !address.city && !address.country)
{ }
else {result = await geocode(address)}