下面是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的

茅侃侃
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。
添加回答
举报
0/150
提交
取消