1、都可用作「逻辑与运算符」
&和&&用作「逻辑与运算符」时,当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。在JS中,一共有这几种情况被认定为假:fase,undefined,'',null,0与神奇的NaN。
注意: &&具有短路的功能,而&不具备短路功能 。这里我给出个例子解释一下
var a = 1;
console.log(false & a++); // 0
//在这里在输出一下 a
console.log(a) // a=2var b = 1;
console.log(false & b++); // 0
//在这里在输出一下 b
console.log(b) // b=1
不知道大家看明白没 , 这里说到的「&& 具有 短路功能」指的就是 当第一个值为false时,&&的表达式直接得出结论为false,不继续执行后面的代码;而&在第一个值为false时,还会继续执行后面的操作,然后才能得到结果。
2、&可用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作。
怕大家不懂(我看了别人写的比较牛逼的博客 也有点懵 哈哈) 我在下面举出具体简单易懂例子 方便大家理解
//将两个表达式的值按二进制位展开,对应的位(bit)按值进行“与”运算,结果保留在该位上
//这里我就随便选2个简单的数字吧 49 、 83
49 => 0110001 //位数不够,左侧0补位
83 => 1010011
得 => 0010001 //转10进制 17
即 console.log(49 & 83) // 17
自认为比较好理解,希望对大家有所帮助。