JS中的逻辑运算符&&、||,位运算符|,&

在javascript中:
以下内容会被当成false处理:"" , false , 0 , null , undefined , NaN
其他都是true。注意:字符串"false"也会被当做true处理,在未转型的情况下他是字符串,属于一个对象,所以是true。

1、JS中的||符号:
运算方法:
     只要“||”前面为false,不管“||”后面是true还是false,都返回“||”后面的值。
     只要“||”前面为true,不管“||”后面是true还是false,都返回“||”前面的值。
总结:真前假后

a || b:如果a是true,那么b不管是true还是false,都返回true。不用再判断b。
   如果a是false,那么就要判断b,如果b是true,那么返回true,如果b是false,返回false。

2、JS中的&&符号:
运算方法:
     只要“&&”前面是false,无论“&&”后面是true还是false,结果都将返“&&”前面的值;
     只要“&&”前面是true,无论“&&”后面是true还是false,结果都将返“&&”后面的值;
总结:假前真后

a && b:如果a是false,那么b不管是true还是false,都返回false,因此不用判断b了。
   如果a是true,那么就要在判断b,和刚刚一样,不管b是true是false,都返回b。

3、位运算符:|
运算方法:
     两个位只要有一个为1,那么结果都为1。否则就为0
|运算符还能进行取整运算

例:5.3 | 4.2 结果为5,5的二进制为101,4的二进制为100    101|100的结果为101   即5

4、位运算符:&
运算方法:
      两个数值的个位分别相与,同时为1才得1,只要一个为0就为0。

性能上的比较
逻辑运算符&& || 中,如果&&的第一个运算数是false,就不再考虑第二个运算数,直接返回false;如果||的第一个运算数是true,也不再考虑第二个运算数,直接返回true。而&和|运算符却不是这样的,它们总是要比较两个运算数才得出结果,因而性能上&&和||会比&和|好。

功能用法
&&和||只能进行逻辑运算,而&和|除了可以进行"逻辑运算"外,还可以进行位运算
位运算
&和|本是位运算符,之所以可以进行"逻辑运算",是由于JS是无类型的语言、各数据类型可以自由转换这一特性决定的,当用&和|进行"逻辑运算"时,实际上true被转换成1,false被转换成0,再进行逐位运算:
true & false  // 0 ; 等同于逻辑运算被转化成位运算,并执行: 1 & 0  //  0
也正是由于&和|是逐位运算符,才出现了上面中所说的,它们总是要比较两个运算数才得出结果,导致性能会比&&和||低一些。

位运算用途实例:
遍历中,i++每次循环,按执行次数的奇偶,轮流执行2段代码:
for(i=1;i<10;i++){
// i && 1? console.log("第1段代码") : console.log("第2段代码");
i & 1? console.log("第1段代码") : console.log("第2段代码");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值