JavaScript中的if(c == 10)和if(c&10)有什么区别?

时间:2018-11-29 07:44:35

标签: javascript if-statement

我看到了if条件,如if(c&10),而此条件类似于if(c == 10)。这是用JavaScript编写代码的正确方法吗?

3 个答案:

答案 0 :(得分:3)

这是正确的(例如,这不是语法错误),但是&==是不同的运算符。

&bitwise AND运算符。 ==abstract (loose) equality运算符。

c & 10c == 10ifc恰好在10中工作的原因是由于c & 10返回真实值(实际上为10); c == 10返回true(根据定义,这是事实)。

但是,与c & 10不同,c == 10也可以用于大量其他整数。

答案 1 :(得分:0)

c & 10将产生一个数字。 c == 10将产生一个二进制值。

var c = 10;
console.log("c & 10  = ",c & 10);    // 10
console.log("c &  7  = ",c &  7);    // 2
console.log("3 & c   = ",3 & c);      // 2
console.log("10 & 10 = ", 10 & 10); // 10
console.log("c==10 = ", c==10);     // true

答案 2 :(得分:0)

按位AND 运算符使用两个整数的二进制表示形式,并逐位比较二进制数字(0或1),并且将生成一个新的整数,且仅当且仅将响应位设置为1如果前两个数字中的对应位都为1,则该位将为0。

Ex。 1

比较10和20
10是二进制00001010 = 8 + 2 = 2 ** 3 + 2 ** 1
20是二进制00010100 = 16 + 4 = 2 ** 4 + 2 ** 2

比较

  00001010
& 00010100
  -------- 
  00000000

因为在无位置上有两个1

Ex。 2

比较10和200
10是二进制00001010 = 8 + 2 = 2 ** 3 + 2 ** 1
20是二进制11001000 = 128 + 64 + 8 = 2 ** 7 + 2 ** 6 + 2 ** 3

比较

  00001010
& 11001000
  -------- 
  00001000
      ^Here are two 1s

因为在位置3处有两个1。所以200和10是8