&&与||到底返回什么~,&&or&

在实际开发过程中,我们往往需要加数据保护判断,譬如后端返回的接口数据是data,你需要渲染data.result.status在页面上,那么可以直接写data.result.status在页面上么,答案是否定的,任何时候,当无法保证这些数据一定正常返回时(可能这里的data.result是undefined),你必须做好必要的防御措施,譬如你需要if(data && data.result && data.result.status)进行这样的判断,那么&&返回的是boolean值么,之前我一直是这样以为的,后来才发现答案并不是这样~

a && b,会先求a和b的boolean值,如果a的boolean值是false,那么直接返回a的值,否则返回b的值,譬如:
 * a为'',b为2,a&& b结果为''
 * a为2,b为'',a&&b结果为''
 * a为false,b为2,结果为false
 * a为2,b为5,a&&b返回结果是5

是不是和大家想的不太一样呢,而a||b逻辑有些许类似:

a || b,会先求a和b的boolean值,如果a的boolean值是false,那么直接返回b的值,否则返回a的值,譬如:
* 2 ||5,结果为2
* '' ||2,结果为2

那么a|b执行的是什么操作

a|b是一种位操作符,它把运算数转换为数字,再将每个数字中的数位对齐,然后在每个位置上根据1|0=1,0|1=1,0|0=0,1|1=1的法则得出相应数字,得到结果的二进制表示,然后再把这个二进制数字转换成浮点数~
* 2|''结果为2,因为第二个''转换成数字0,00|10结果为10,浮点数为2
* 2|'222e',结果为2,因为第二个转换为NaN,所以直接取了第一个数字作为结果~

而a&b的逻辑就和a|b又有一些类似啦~~
其实这些基础知识在w3school里面就有,可是时间一长基础就不是特别牢固啦,所以想把这个点拿出来,单独醒醒脑~~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值