第二个值为 null 的三元运算符

Ternary operator with a null in 2nd value

假设,if statement 如下

if(true) { doSomething() }

我会写成

true ? doSomething() : null

两者的结果相同,但两者的目的肯定不同。

有人可以分享他们关于

的经验吗

PS: It does not make a big difference to write an else case either. So I hope answers or comments are not related to that.

if 是一个 语句 ,一个没有固有值的步骤列表。

a ? b : c 是一个 表达式 - 它的计算结果为 bc.

的值

三元运算符效果很好 你想使用条件结果的地方:

// After this line, `result` has either the return value of `doSomething` or `null`.
const result = value ? doSomething() : null

if 效果很好 你不需要使用结果的地方,你想 运行 在任何条件分支中的几个语句或者你想要链接几个 if/else if/else 条件。

In most languages 您可以将三元表达式链接起来以模仿 if/else if/else,但这可能很难阅读。

三元运算符不是替代 if(在许多方面)。尽管您可以编写各种模仿其他类型代码的 hack,但我无法想象任何有能力的程序员会想到在这里使用三元而不是正常的、完全可读且有效的 if 子句。

应该注意的是,三元运算符并不是一个非常强大的工具。有时它可以让您以更短的方式编写一些代码,但这几乎不是尝试在所有可能的地方使用它的理由。

除此之外:

true ? doSomething() : null

只会让大多数读者感到惊讶;不管用什么编程语言。

从这个意义上说:这是 "bad" 风格的一个很好的例子;这对您的源代码 readability/clearness 没有帮助。让你的读者感到惊讶(从这个意义上说)不是一个好主意: