js和php或运算的区别,JS的逻辑运算符&& ||和位运算符 & | 的区别

性能上的比较

逻辑运算符&& || 中,如果&&的第一个运算数是false,就不再考虑第二个运算数,直接返回false;如果||的第一个运算数是true,也不再考虑第二个运算数,直接返回true。而&和|运算符却不是这样的,它们总是要比较两个运算数才得出结果,因而性能上&&和||会比&和|好。

功能用法

&&和||只能进行逻辑运算,而&和|除了可以进行"逻辑运算"外,还可以进行位运算

位运算

&和|本是位运算符,之所以可以进行"逻辑运算",是由于JS是无类型的语言、各数据类型可以自由转换这一特性决定的,当用&和|进行"逻辑运算"时,实际上true被转换成1,false被转换成0,再进行逐位运算:

document.write(true & false); //JS,结果为0

上面这句,实例等同于逻辑运算被转化成下面的位运算,并执行:

document.write(1 & 0); //JS,结果为0

也正是由于&和|是逐位运算符,才出现了第一点中所说的,它们总是要比较两个运算数才得出结果,才导致性能会比&&和||低一些。

位运算用途实例:

遍历中,i++每次循环,按执行次数的奇偶,轮流执行2段代码:

for(i=1;i<10;i++){

// i && 1?alert("第1段代码"):alert("第2段代码");

i & 1?alert("第1段代码"):alert("第2段代码");

}

提示:你可以先修改部分代码再运行。

位运算计算方法

常用进制转换工具:https://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.

你可能感兴趣的:(js和php或运算的区别)