JavaScript中的&&与&与,||或|或详解

在我们先前的使用过程中,我们很多时候都是遇到的是把他们放在if()等判断语句中,直接判断结果是否为真或者假。

比如if(true&&false)判断为假,当然我们用的时候是各种表达式。


关于&&,&,||,|先进行一下说明

&&:逻辑与,判断逻辑结果是否为真,第一个条件为假,不再判断第二个条件

&:按位与,属于数值运算,比如1&2=0,二进制按位与操作01和10结果为00

||:逻辑或,判断逻辑结果是否为真,第一个条件为真,不再判断第二个条件

|:按位或,属于数值运算,比如1|2=3,二进制按位或操作01和10结果为11

&&、||补充说明

这样是不够的,按位操作我们知道是按照二进制进行操作,得到结果。

逻辑与、逻辑或操作可以应用于任何类型的操作数,而不仅仅是布尔值。在有一个操作数不是布尔值的情况
下,逻辑与操作就不一定返回布尔值。

那么逻辑与、逻辑或的结果是什么呢?

举个例子

alert(1&&2) alert(0||1)

结果是什么?懵逼吗?


规则如下:
只要“&&”前面是false,无论“&&”后面是true还是false,结果都将返“&&”前面的值;
只要“&&”前面是true,无论“&&”后面是true还是false,结果都将返“&&”后面的值;
只要“||”前面为false,不管“||”后面是true还是false,都返回“||”后面的值。
只要“||”前面为true,不管“||”后面是true还是false,都返回“||”前面的值。

 

再详细一点的规则如下(出自JavaScript高级程序设计)

逻辑与

逻辑或

出个题感受一下

var a = 1 && 2 && 3;//3
var b = 0 && 1 && 2;//0
var c = 1 && 0 && 2;//0
var a = 0 || 1 || 2;//1
var b = 1 || 0 || 3;//1

 


补充说明

优先级问题

运算符

描述

. [] ()

字段访问、数组下标、函数调用以及表达式分组

++ -- - ~ ! delete new typeof void

一元运算符、返回数据类型、对象创建、未定义值

* / %

乘法、除法、取模

+ - +

加法、减法、字符串连接

<< >> >>>

移位

< <= > >= instanceof

小于、小于等于、大于、大于等于、instanceof

== != === !==

等于、不等于、严格相等、非严格相等

&

按位与

^

按位异或

|

按位或

&&

逻辑与

||

逻辑或

?:

条件

= oP=

赋值、运算赋值

,

多重求值

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

优先级依次降低,简而言之,&>|>&&>||

出个题感受一下

var a = 3 && 0 || 2;  //2
var b = 3 || 0 && 2; // 3
var c = 0 || 2 && 3; // 3

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值