Javascript 第二个值为空的三值运算符

Javascript 第二个值为空的三值运算符,javascript,if-statement,ternary-operator,Javascript,If Statement,Ternary Operator,假设一个if语句如下 if(true) { doSomething() } 我会把它写成 true ? doSomething() : null 两者的结果是相同的,但两者的目的肯定有所不同 有人能分享一下他们的经验吗 null有什么区别。这是个坏习惯吗 这是未来的证明代码,因为如果我必须在未来为相反的情况添加功能。我可以直接替换null而不是编写一个完整的else语句 PS:写一个else案例也没什么区别。所以我希望答案或评论与此无关 如果是一条语句,则为没有固有值的步骤列表 a?b:

假设一个
if语句如下

if(true) { doSomething() }
我会把它写成

true ? doSomething() : null
两者的结果是相同的,但两者的目的肯定有所不同

有人能分享一下他们的经验吗

  • null
    有什么区别。这是个坏习惯吗
  • 这是未来的证明代码,因为如果我必须在未来为相反的情况添加功能。我可以直接替换
    null
    而不是编写一个完整的
    else语句
PS:写一个
else案例也没什么区别。所以我希望答案或评论与此无关

如果
是一条语句,则为没有固有值的步骤列表

a?b:c
是一个表达式-其计算结果为
b
c
的值

三元运算符工作良好如果要使用条件的结果:

// After this line, `result` has either the return value of `doSomething` or `null`.
const result = value ? doSomething() : null
如果
运行良好
在不需要使用结果的情况下,您希望在任何条件分支中运行多个语句,或者希望链接多个
if/else if/else
条件

您可以将三元表达式链接到它们以模仿
if/else if/else
,但这可能很难理解。

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

a?b:c
是一个表达式-其计算结果为
b
c
的值

三元运算符工作良好如果要使用条件的结果:

// After this line, `result` has either the return value of `doSomething` or `null`.
const result = value ? doSomething() : null
如果
运行良好
在不需要使用结果的情况下,您希望在任何条件分支中运行多个语句,或者希望链接多个
if/else if/else
条件


您可以将三元表达式链接到它们以模拟
if/else if/else
,但这可能很难读取。

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


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

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

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

除此之外:

true ? doSomething() : null
只会让大多数读者大吃一惊;无论使用哪种编程语言

从这个意义上说:这是一个“坏”风格的好例子;这对源代码的可读性/清晰性没有帮助。让你的读者感到惊讶(从这个意义上说)不是一个好主意:

除此之外:

true ? doSomething() : null
只会让大多数读者大吃一惊;无论使用哪种编程语言

从这个意义上说:这是一个“坏”风格的好例子;这对源代码的可读性/清晰性没有帮助。让你的读者感到惊讶(从这个意义上说)不是一个好主意:


谢谢。这正是我的问题。如果我们能用两种方法做一件事。为什么要划出一个(?:)除非另一种方式有不同的目的(如果)我们通常可以用多种方式做一件事。这并不意味着它们都是聪明的方法,即使它们最终可能会得到相同的结果。谢谢。这正是我的问题。如果我们能用两种方法做一件事。为什么要划出一个(?:)除非另一种方式有不同的目的(如果)我们通常可以用多种方式做一件事。这并不意味着所有这些方法都是聪明的,即使它们最终可能会得到相同的结果。请注意,在javascript中,如果您有
var x=0,y=0
,那么稍后执行
x=(y==1?1:null)
它不会忽略null,而是将x设置为null。Java或javascript?它们不一样。他们其实很不一样。您显示的内容在Java中甚至无效,因为
value?doSomething():null
不是语句。
java!==javascript
,请添加您需要的语言。我说的是javascript-editedYeah,但OP是在问javascript、Java还是Groovy?因为答案非常不同,取决于语言。请注意,在javascript中,如果您有
var x=0,y=0
,那么稍后执行
x=(y==1?1:null)
它不会忽略null,而是将x设置为null。Java还是javascript?它们不一样。他们其实很不一样。您显示的内容在Java中甚至无效,因为
value?doSomething():null
不是语句。
java!==javascript
,请添加您需要的语言。我说的是javascript-editedYeah,但OP是在问javascript、Java还是Groovy?因为答案是非常不同的,取决于语言。