JS中逻辑运算符 && 和 || 的一点小总结

本文详细解析了JavaScript中的逻辑与(&&)和逻辑或(||)运算符的优先级及执行机制。通过实例展示了如何在表达式中使用这两个运算符,并分析了其遇到真值或假值时的短路行为。最后,文章强调了&&和||的主要作用是进行布尔值的逻辑运算,并返回相关变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JS中的 && 和 ||

在JS中的 逻辑与 逻辑或

&& 优先级高于 ||

⑴逻辑与  && 的运算 : 一个为假就为假,全真则为真,遇假则停

例子 : a && b

 如果a是false,那么b不管是true 还是false ,都会返回a的结果false , 因此就不用判断b了 ,因为这个时候刚好判断了a ,因此返回a。

如果a 是true , 那么就要继续判断 b , 不管b 是true还是false , 都会返回b 。

⑵逻辑或  || 的运算 : 一个为真就为真,全假则为假,遇真则停

例子 : a || b

  如果a是false, 那么就要判断b ,继而返回b的结果。其实就是返回b。

如果a是true , 那么不管b 是true还是false, 都会返回true,返回前面的结果,因此不用判断b了,这个时候刚好判断到a,因此返回a。

做一个复杂一点的例子 : (注意在JS中&&运算符优先级大于|| )

假设 :

  var a=new Object(), b=0, c=Number.NaN, d=1, e=Hello;

  Console.log( a || b && c || d && e );

( a || b && c || d && e ) 表达式从左往右执行,先&&后||

  1. 先执行 ( b&& c) : b是false , 此时不需要判断c , 因为不管c是true还是false , 都会返回 b , 最终结果一定是false, 因此返回当前判断对象 b , 就是0 ;
  2. 然后执行 ( d && e ) : d是 true , 这个时候判断e ,此时不管e是true 还是false , 返回结果一定是e , e为true , 因此返回 Hello ;
  3. 再执行(a || b) : a 是true, 此时不管 b 是true 还是false, 结果都是true , 所以不用判断b ,所以返回当前判断对象 a , 因此返回new Object() ;
  4. 最后执行 (a || e) : 同上逻辑 , 因此返回 a 。

这个表达式的最终结果为 a ,也就是 new Object () ;

所以 透过现象发现本质,本质是什么呢 ?

&& 和 || 的作用只有一个(定义)进行布尔值的且和或的运算。当运算到某一个变量就得出最终结果之后,就返回哪个变量

文字描述区别 :

  1. 运算表达的不同

 只要  ||  前面 为false, 不管  ||  后面 是true 还是 false , 都返回  ||  后面的值。只要  ||  前面 为true , 不管  ||  后面 是true 还是false , 都返回  ||  前面的值

     2. 使用方式的不同

 只要  &&  前面 是false , 无论  &&  后面 true 还是 false , 结果 都将返  &&  前面的值; 只要  &&  前面是true , 无论  &&  后面是true 还是false , 结果都将返  &&  后面的值;

此文同时参考也借鉴了网上的一些结果。

03-14
<think>好的,用户想了解|=&=运算符在编程中的用法区别。首先,我需要确认这两个运算符的基本定义常见用途。记得在编程中,&=|=通常用于位运算逻辑运算,但具体行为可能因语言而异。 首先,我应该回顾一下位运算符的基本知识。在C、C++、Java、JavaScript语言中,&=是按位与赋值运算符,|=是按位或赋值运算符。它们的作用是对变量进行位操作后赋值。例如,a &= b相当于a = a & b,同样,a |= b就是a = a | b。 接下来,用户可能想知道它们与逻辑运算符&&=||=的区别。不过,在大多数语言中,并没有&&=||=这样的运算符逻辑赋值通常是通过组合使用,比如a = a && b或者更简洁的a &&= b(某些语言如Ruby支持,但C家族语言通常不支持)。所以需要澄清这一点,避免混淆。 然后,应该考虑它们的实际应用场景。比如,位操作常用于处理标志位或掩码。例如,用|=来设置某个位,用&=来清除位。这时候可能需要举例说明,比如设置文件权限或者硬件寄存器配置。 还需要注意短路效应的问题。逻辑运算符&&||具有短路行为,但位运算符&|没有。不过当用于条件判断时,比如在if语句中使用&或|,即使作为逻辑条件,它们也不会短路。但作为赋值运算符时,&=|=只是执行位运算并赋值,不会有短路效应。 另外,用户可能混淆了位运算符逻辑运算符。比如,&&是逻辑与,而&是按位与。需要明确区分它们的用途:逻辑运算符用于布尔表达式,返回true或false;位运算符对每一位进行操作,返回一个数值。 还要考虑不同编程语言中的差异。比如,在JavaScript中,位运算符会将操作数转换为32位整数,这可能影响结果。而Python中,整数可以是任意长度,处理方式不同。不过用户的问题没有指定语言,所以需要给出一般性的解释,并提到可能的语言差异。 最后,应该总结两者的区别,强调位操作与逻辑操作的不同,赋值运算符的作用,以及典型应用场景。同时,可能需要提醒用户注意运算符优先级的问题,虽然这可能超出当前问题的范围,但了解有助于避免错误。 现在需要检查是否有遗漏点,比如复合赋值运算符的执行顺序,或者特殊用例。例如,a |= b实际上
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值