踩坑——写三目请务必加上括号

今天在写业务逻辑判断的时候,实实在在地踩了一个坑,特此记录一下。

把代码中的具体业务抽离一下,大概是这样的:

let flag = 0 === false &&
           1 == true && 
           '' == false ? false : true

问,flag 的值是多少?

当然,如果你开发经验丰富的话,很容易看出结果是多少。

先说说我踩坑的思路:

  1. 首先,&& 运算符,是有一种短路效果的,也就是说多个 && 运算符同时出现的话,如果前面有一个 false,那么后面的 && 就不会判断了,相信这一点,大家都知道
  2. 于是乎,我就得出了答案,因为0 === falsefalse,所以,后面的就不会再判断了,所以 flag 的值就为 false

但很明显,我错了,后面还有个三目运算符啊。。。

在三目运算符看来0 === false && 1 == true && '' == false ? false : true 中的 0 === false && 1 == true && '' == false 是一个整体。
所以,前面的整体为false,所以经过三目之后,得到的结果就为true
在这里插入图片描述

如果给三目加上括号,结果就相反了:

在这里插入图片描述

所以,长个教训,以后写这种逻辑运算符,并且有点长的时候,一定一定要加括号,因为指不定就会出现一些你预想不到的情况,到时候又得调试半天。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值