js中逻辑或(||)和逻辑与(&&)解析

先来看一个关于逻辑或的例子:

var b = 0
var a = b++ || b++
console.log(b)      // 2
var c = ++b || ++b
console.log(a)      // 1
console.log(c)      // 3
console.log(b)      // 3

关于 ++b和b++的区别,后++的运算等级没有赋值运算符(=)高, 这里不再作过多的解释,

首先从全局来看,关于的b的运算总共执行了4次,每次都自身+1,那么按道理来说,如果这些运算都执行了,b的最后的值正常来说应该是4,那为什么最后的结果是3呢?

关于逻辑或我自己总结如下:

①、首先如果第一项的值不是Boolean值的话,会转为Boolean类型的,在数值上,0和-0在转为Boolean时为false,其余为true,在其他值上诸如null,undefined,NaN,空string类型等会转为false,这里不再作过多的解释

console.log(Boolean(NaN))               // false
console.log(Boolean(null))                // false
console.log(Boolean(undefined))      // false
console.log(Boolean(''))                    // false
console.log(Boolean(' 0'))                 // true

②、如果第一项的值为true时,则后面一项则不执行,返回的是第一项执行运算后的值

网上看到的是说如贵第一项为true,返回的也是true,这是不对的说法。

③、如果第一项的值为false时,则执行后面一项的运算,返回的是第二项执行运算后的值

再来看多一个例子,自己多动手尝试看看就明白了。

var b = 0
var a = (typeof b++) || b++
console.log(b)      //1        
var c = ++b || ++b
console.log(a)      // number   
console.log(c)      // 2        
console.log(b)      // 2        

--------------------------------------------------------------------------      来个分割线      ---------------------------------------------------------------

看一个关于逻辑与的例子

var b = 0
var a = (typeof b++) && b++ 
console.log(b)    	        // 2
var c = ++b && ++b
console.log(a)        		// 1
console.log(c)          	// 4
console.log(b)      		// 4

关于逻辑与我自己总结如下:

①、逻辑与和逻辑或一样,都需要把前后两项进行Boolean转换再比较

②、如果第一项的值为true时,则执行后面一项的运算,返回的是第二项执行运算后的值

③、如果第一项的值为false时,则后面一项则不执行,返回的是第一项执行运算后的值

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值