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?因为答案是非常不同的,取决于语言。