var num1 = 1 & 0;console.log(num1); // 0var num2 = "string" & 1;console.log(num2); // 0var num3 = true & 1;console.log(num3); // 1 var num4 = undefined | false;console.log(num4); // 0 var num5 = undefined | true;console.log(num5); // 1 var num6 = 23 & 5;console.log(num6); // 5var num7 = 23 | 5;console.log(num7); // 23上面的题目大家都做对了吗?我们之前有总结过 《浅谈javascript中的 “ && ” 和 “ || ” 》,"&&” 和 “||” 是逻辑运算表达式中的操作符。那么一个 “&” 或者一个 “|” 又代表什么含义呢?有什么特性呢?接下来,我们就来一一揭秘。
// num1是1和0进行“按位与”操作后的返回值。1的二进制码简写为1,0的二进制码简写为0,根据上面的规则,第二个操作符数为0,结果是0var num1 = 1 & 0;console.log(num1); // 0 // 第一个操作符数是字符串,按照前言里面的理论,对于非数值的操作符数,先使用Number()函数处理,结果返回NaN,NaN又会被当成0来处理。所以最终结果也是0var num2 = "string" & 1;console.log(num2); // 0// true是布尔类型值,同样使用Number()函数处理,处理后得到数值1,于是表达式就相当于“1 & 1” 进行位运算,当两个数值都为1的时候,结果返回1var num3 = true & 1;console.log(num3); // 1// 23的二进制码是:...10111,5的二进制码是:...00101。然后每一位进行对齐处理,结合上面的规则,可以得出10111&00101的结果是:00101。00101就是5var num6 = 23 & 5;console.log(num6); // 5 // 再加个例子:24的二进制码为...11000,7的二进制码为...00111,相同位置的两个数执行AND操作,结果发现结果是...00000。所以最终结果是0,你算对了吗?var add1 = 24 & 7;console.log(add1); // 0三、“|”(按位或OR):
// 第一个操作符数为undefined,第二个操作符数是false,均不是数值,所以都要先使用Number()函数处理,处理结果都是返回NaN,NaN又会被当成0处理,于是最终结果是0var num4 = undefined | false;console.log(num4); // 0// 第一个操作符数相当于0,第二个操作符数相当于1,结合按位或的规则,最终结果是1var num5 = undefined | true;console.log(num5); // 1// 23的二进制码是:...10111,5的二进制码是:...00101。然后每一位进行对齐处理,结合上面的规则,可以得出10111|00101的结果是:10111。10111就是23var num7 = 23 | 5;console.log(num7); // 23// 再加个例子:24的二进制码为...11000,7的二进制码为...00111,相同位置的两个数执行AND操作,结果发现结果是...11111。所以最终结果是31,你算对了吗?var add2 = 24 | 7;console.log(add2); // 31四、其他:
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!