将三元与 AND 或 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)

返回结果 true 2 答案 true 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的条件测试中的任何一个都是真的,或者没有一个是真的。

最新更新