Do三元运算符在所有情况下都需要一个else块



假设我有这样的代码:

i=1;
if(i===1)
{
    i++;
}

此代码确实有一个if块,但没有else块。所以,我的问题是,如何用三元算子完成同样的事情。我试过这样的东西:

i=1;
i===1? i++

但出现了一个错误:

SyntaxError: Unexpected end of input.

更新:

所以,现在我改变我的问题,问三元运算符在所有情况下都需要其他块吗?

i = i===1 ? i+1 : i;

i += i===1 ? 1 : 0;

但你可能想用if。三元则不那么清晰。

是的,这意味着三元总是需要一个其他的。三元的定义是"由三部分组成",如果这有助于澄清的话。

实际上,您可以执行类型的三元,而不执行其他操作

从技术上讲,它不是三元的,但有着相同的目的,并且有着类似的简洁格式。

这是一个叫做短路的把戏。

    i===1 && i++;

请参阅,该代码被视为一对通过AND连接的"if"测试。当您执行一系列AND条件测试时,一旦其中任何一个失败(从左到右解析(,其余的都将被忽略。

因此,您可以将任何赋值或操作放在测试之后,并且只有在测试成功的情况下才会发生。

    refrigerator && beer();

只有在有冰箱的情况下才会放啤酒。

    refrigerator && beer() && drunk = "Woah Nelly";

只有当冰箱是truthy的时候才会运行啤酒,只有当啤酒返回truthy时才会醉成"Woah Nelly"。

如果它变得复杂,你可以这样格式化:

    refrigerator 
        && beer() 
        && drunk == "Woah Nelly"
        && toilet = barf();

在您的情况下,只有当i等于严格类型的1时,它才会增加++;

相关内容

  • 没有找到相关文章

最新更新