将三元与 and or javascript 结合?
combining ternary with and or javascript?
为什么会这样?
let number = 5
const result = number == 4 ? 'true 1' : 'false 1' || number == 3 ? 'true 2' : 'false 2' || number == 5 ? 'true 3' : 'false 3'
console.log(result)
// return 结果为真 2
回答正确2 为什么会这样?
你的说法
const result = number == 4 ? 'true 1' : 'false 1' || number == 3 ? 'true 2' : 'false 2' || number == 5 ? 'true 3' : 'false 3'
被解释为好像写成
const result = (number == 4) ? 'true 1' : ('false 1' || number == 3) ? 'true 2' : ('false 2 || number == 5) ? 'true 3' : 'false 3';
特别地,这部分 ('false 1' || number ==3)
是 true
因为 'false 1'
是一个非空字符串。
我不确定您在尝试什么,但请注意 ? :
最终只能有一个值:第一个表达式的值或第二个表达式的值。因此,那些 'false n'
字符串实际上没有任何意义:number
的条件测试之一将为真,或者 none 将为真。
为什么会这样?
let number = 5
const result = number == 4 ? 'true 1' : 'false 1' || number == 3 ? 'true 2' : 'false 2' || number == 5 ? 'true 3' : 'false 3'
console.log(result)
// return 结果为真 2
回答正确2 为什么会这样?
你的说法
const result = number == 4 ? 'true 1' : 'false 1' || number == 3 ? 'true 2' : 'false 2' || number == 5 ? 'true 3' : 'false 3'
被解释为好像写成
const result = (number == 4) ? 'true 1' : ('false 1' || number == 3) ? 'true 2' : ('false 2 || number == 5) ? 'true 3' : 'false 3';
特别地,这部分 ('false 1' || number ==3)
是 true
因为 'false 1'
是一个非空字符串。
我不确定您在尝试什么,但请注意 ? :
最终只能有一个值:第一个表达式的值或第二个表达式的值。因此,那些 'false n'
字符串实际上没有任何意义:number
的条件测试之一将为真,或者 none 将为真。