Javascript比较逻辑 - 让a = 1。 a ===(3 || 1)假,为什么?

时间:2018-06-13 09:15:41

标签: javascript logic comparison

我试图使用这种比较声明,并且几乎可以肯定它会起作用,但事实并非如此。你能解释一下原因吗?

let a = 1 
a === ( 1 || 3 ) // true 
a === ( 3 || 1 ) // false 

感谢您的回复:)

3 个答案:

答案 0 :(得分:3)

如果使用OR比较,如果最左边的表达式中的任何一个为真,则整个表达式结果为true。因此,

( 1 || 3 )将选择1,因为1是最左侧的定义值,当您a === ( 1 || 3 )时,truea === 1 }} truea = 1



let a = 1;
let rightCondition = ( 1 || 3 );
//this will give 1
console.log(rightCondition);
console.log(a === rightCondition);




但是,( 3 || 1 )会选择3,因为3是最左侧的定义值,当您a === ( 3 || 1 )时,falsea === 3鉴于false

,{1}}为a = 1



let a = 1;
let rightCondition = ( 3 || 1 );
//this will give 3
console.log(rightCondition);
console.log(a === rightCondition);




答案 1 :(得分:2)

我认为您正在寻找的比较实际上是:

let a = 1 
a === 1 || a === 3  // true

答案 2 :(得分:1)

JavaScript中的整数(如1和3(但不是0))为truthy。因此,您的第一个比较返回1,因为1是真实的,最左边的操作数,第二个返回3,因为3也是真正的最左边的操作数。当找到真值时(从左侧开始),比较立即停止。所以,在你的第二次比较中,程序甚至不看1。