&与&&逻辑与短路与按位与


&&( 逻辑与) ||(逻辑或) 是逻辑运算符
& (按位与) | (按位或) 是位运算符

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);
}
?>

文章作者: iamfugui
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 iamfugui !
评论
  目录