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

时间:2017-04-14 18:38:02

标签: javascript if-statement ternary-operator

假设if statement如下

if(true) { doSomething() }

我将把它写成

true ? doSomething() : null

两者的结果相同,但两者的目的必然不同。

有人可以分享他们的经验吗

  • null有什么区别。这是一种不好的做法吗?
  • 是否是未来验证码,因为如果我必须在将来为相反的情况添加功能。我可以替换null而不是写一个完整的else statement
  

PS:写else case也没什么大不了的。所以我希望答案或评论与此无关。

3 个答案:

答案 0 :(得分:3)

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,但这可能很难阅读。

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

除此之外:

true ? doSomething() : null

只会意外大多数读者;无论使用何种编程语言。

从这个意义上来说:这是一个很好的例子,对于一个"坏"样式;这无助于源代码的可读性/清晰度。让读者感到惊讶(在这个意义上)并不是一个好主意:

wtf-per-minute