前端中“&&”和“||”运算符记录

看了下某人的博客,说的如下:

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

&& 

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

后端java中,&&为短路与:一假全假,||为短路或:一真全真

但是我看到的前端代码:

是不是很神奇,符号两边是对象或对象的属性,并不是我们以为的true或false

-------------------------------------------------分割线------------------------------------------------------

以下内容为转载,原文   https://www.cnblogs.com/yanayana/p/7079345.html

与其他语言不同,在js中,逻辑运算符可以返回任何类型的数据,不仅仅是true和false。

&&和||的返回值是两个操作数的其中一个。即a&&b或者a||b返回的是要么是a,要么是b,而其他语言中返回的是true or false。

在js逻辑运算中,需要隐式的转换为boolean类型再来运算,转换规则为:

1. 对象、非零number、非空string——>true

2. 0、""、null、false、undefined、NaN——>false

具体见下表:

数据类型                

转换为boolean后的值
NANFALSE
nullFALSE
undefinedFALSE
ObjectTRUE
FunctionTRUE
0FALSE 
非零的数字             TRUE
""(空字符串)FALSE
非空字符串             TRUE

二、理解

“&&”和“||”运算符均可以从三个不同的层次来逐步理解:

以“&&”为例解释如下:

(1)最简单的第一层理解是,当操作数都是布尔值的时候,“&&”对两个值执行布尔与(AND)操作,只有在第一个操作数和第二个操作数都是true的时候,它才返回true。如果其中一个操作数是false,它返回false。

(2)“&&”的操作数并不一定是布尔值。于是对“&&”的第二层理解是,“&&”可以对真值和假值进行布尔与(AND)操作。如果两个操作数都是真值,那么返回一个真值;否则,至少一个操作数是假值的话,则返回一个假值。在JavaScript中任何希望使用布尔值的地方,表达式和语句都会将其当做真值或假值来对待,因此实际上“&&”并不总是返回true和false。

(3)第三层理解,运算符首先计算左操作数的值,即首先计算“&&”左侧的表达式。如果计算结果是假值,那么整个表达式的结果一定也是假值,因此“&&”这时简单地返回左操作数的值,而并不会对右操作数进行计算。反过来讲,如果左操作数是真值,那么整个表达式的结果则依赖于右操作数的值。如果右操作数是真值,那么整个表达式的值一定是真值;如果右操作数是假值,那么整个表达式的值一定是假值。

写在最后:java中使用对象或对象的属性去做&&和||判断返回的是true还是false呢?评论区留下你的答案吧

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值