假设我有这样的代码:
i=1;
if(i===1)
{
i++;
}
此代码确实有一个if
块但没有else
块。所以,我的问题是,如何用三元运算符完成同样的事情。我曾尝试过这样的事情:
i=1;
i===1? i++
但出现错误:
SyntaxError: Unexpected end of input.
更新:
所以,现在我改变我的问题,问三元运算符在所有情况下都需要一个 else 块吗?
假设我有这样的代码:
i=1;
if(i===1)
{
i++;
}
此代码确实有一个if
块但没有else
块。所以,我的问题是,如何用三元运算符完成同样的事情。我曾尝试过这样的事情:
i=1;
i===1? i++
但出现错误:
SyntaxError: Unexpected end of input.
所以,现在我改变我的问题,问三元运算符在所有情况下都需要一个 else 块吗?
i = i===1 ? i+1 : i;
或者
i += i===1 ? 1 : 0;
但是您可能想为此使用 if 。三元不太清楚。
是的,这意味着三元总是需要一个 else。如果这有助于澄清,三元的定义是“由 3 个部分组成”。
实际上,您可以在没有 else 的情况下进行某种三元运算。
从技术上讲,它不是三元组,但具有相同的目的,并且具有类似的简洁格式。
这是一个叫做短路的技巧。
i===1 && i++;
看,该代码被视为由 AND 连接的一对“if”测试。当您执行一系列 AND 条件测试时,一旦它们中的任何一个失败(从左到右解析),其余的都将被忽略。
因此,您可以在测试之后进行任何赋值或操作,并且只有在测试成功时才会发生。
refrigerator && beer();
...只有在有冰箱的情况下才会运行啤酒。
refrigerator && beer() && drunk = "Woah Nelly";
...只有在冰箱真实时才会运行啤酒,并且只有当啤酒返回真实时才会将醉酒设置为“Woah Nelly”。
如果它变得复杂,您可以像这样格式化它:
refrigerator
&& beer()
&& drunk == "Woah Nelly"
&& toilet = barf();
在您的情况下,只有当 i 等于严格键入的 1 时,它才会由 ++ 递增;