如果我们只对 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)}