猿问

javascript & 与操作

下面是JS的代码

var j = -1003579263
var i =0x80000000 & j 
if (i & j) {
//成功
}else{
//失败
}

问题是:if (i & j) 为什么会成功
但 if((i & j) == true) 为什么会失败

也就是 if(i & j) 他倒是比较的个啥?

德玛西亚99
浏览 703回答 2
2回答

四季花海

作“与”运算,最简单的理解是,可以把两个数化为二进制来看看,比如10的二进制是101012的二进制是1100那么10&12= 1000(这是二进制)也就是8如果i & j不等于0,那么条件是为true的

茅侃侃

众所周知,& 运算符查看两个表达式的二进制表示法的值,并执行按位“与”操作。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。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答