性能上的比较
逻辑运算符&& || 中,如果&&的第一个运算数是false,就不再考虑第二个运算数,直接返回false;如果||的第一个运算数是true,也不再考虑第二个运算数,直接返回true。而&和|运算符却不是这样的,它们总是要比较两个运算数才得出结果,因而性能上&&和||会比&和|好。
功能用法
&&和||只能进行逻辑运算,而&和|除了可以进行"逻辑运算"外,还可以进行位运算
位运算
&和|本是位运算符,之所以可以进行"逻辑运算",是由于JS是无类型的语言、各数据类型可以自由转换这一特性决定的,当用&和|进行"逻辑运算"时,实际上true被转换成1,false被转换成0,再进行逐位运算:
document.write(true & false); //JS,结果为0
上面这句,实例等同于逻辑运算被转化成下面的位运算,并执行:
document.write(1 & 0); //JS,结果为0
也正是由于&和|是逐位运算符,才出现了第一点中所说的,它们总是要比较两个运算数才得出结果,才导致性能会比&&和||低一些。
位运算用途实例:
遍历中,i++每次循环,按执行次数的奇偶,轮流执行2段代码:
提示:你可以先修改部分代码再运行。
位运算计算方法
常用进制转换工具:http://app.baidu.com/app/enter?appid=419093
十进制转二进制:
用2辗转相除至结果为1
将余数和最后的1从下向上倒序写 就是结果
例如 4
4/2 = 2余0
2/2 = 1 余0
故二进制为100
二进制转十进制:
从最后一位开始算,依次列为第0、1、2...位
第n位的数(0或1)乘以2的n次方
得到的结果相加就是答案
例如:100转十进制:
第0位:0乘2的0次方=0
0乘2的1次方=0
1乘2的2次方=4
然后:0+0+4=4.
二进制100=十进制4.