&&( 逻辑与) ||(逻辑或) 是逻辑运算符
& (按位与) | (按位或) 是位运算符
1. 逻辑运算符
作用:做条件判断
console.log(true||false); // true
console.log(false||true); // true
console.log(true||true); // true
console.log(false||false); // false
只要 && 前面是 false,无论 && 后面是 true 还是 false,结果都将返 && 前面的值;
只要 && 前面是 true,无论 && 后面是 true 还是 false,结果都将返 && 后面的值;
(因为&&前面为假时 不再判断第二个条件)
只要 || 前面为 false,不管 || 后面是 true 还是 false,都返回 || 后面的值。
只要 || 前面为 true,不管 || 后面是 true 还是 false,都返回 || 前面的值。
(因为||前面为真时 不再判断第二个条件)
因为&&和||的短路性质,所以又叫做短路运算符
2. 位运算符
作用:位运算、条件判断
使用较少
console.log(1&2); // 0
console.log(false|true); // 1
console.log(true|true); // 1
console.log(false|false); // 0
console.log(true&true); // 1
console.log(true&false); // 0
按位与 : 1&2=0,二进制按位与操作01和10结果为00
按位或 : 1|2=3,二进制按位或操作01和10结果为11
3. 其它语言差异
3.1 Java
位运算在判断语句只能使用布尔值,不能使用。JS和PHP接收非布尔值类型。
//这里报错
if(1&2){}
3.2 PHP
可以使用短路机制,作逻辑判断。JS不行。
<?php
$a =2;
//使用&&时不会执行$a =3
if(1 == 2 && $a =3){
echo($a);
}else {
echo($a);
}
?>