为了账号安全,请及时绑定邮箱和手机立即绑定

javascript & 与操作

javascript & 与操作

德玛西亚99 2019-02-18 11:12:26
下面是JS的代码var j = -1003579263var i =0x80000000 & j if (i & j) {//成功}else{//失败}问题是:if (i & j) 为什么会成功但 if((i & j) == true) 为什么会失败也就是 if(i & j) 他倒是比较的个啥?
查看完整描述

2 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

作“与”运算,最简单的理解是,可以把两个数化为二进制来看看,比如
10的二进制是1010
12的二进制是1100
那么10&12= 1000(这是二进制)
也就是8

如果i & j不等于0,那么条件是为true的

查看完整回答
反对 回复 2019-02-26
?
茅侃侃

TA贡献1842条经验 获得超22个赞

众所周知,& 运算符查看两个表达式的二进制表示法的值,并执行按位“与”操作。
i&j的运算返回i,j的数据类型,此代码返回数值类型。

if括号内都知道只能判断boolean类型,javascript定义如下:

Boolean 表达式

一个值为 true 或者 false 的表达式。如果需要,非 Boolean 表达式也可以被转换为 Boolean 值,但是要遵循下列规则:

1、所有的对象都被当作 true。
2、当且仅当字符串为空时,该字符串被当作 false。
3、null 和 undefined 被当作 false。
4、当且仅当数字为零时,该数字被当作 false。

因此你会发现 if(i&j)返回的是true,遵循了条件1,因为i&j返回的数值对象。

其次数值类型与boolean作为if条件时,if值识别数值类型返回的0和1,0代表false,1代表true,其他返回值与true或者false运算都视为false。



查看完整回答
反对 回复 2019-02-26
  • 2 回答
  • 0 关注
  • 702 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号