javascript中if(c==10)和if(c&;10)的区别是什么?

javascript中if(c==10)和if(c&;10)的区别是什么?,javascript,if-statement,Javascript,If Statement,我看到了类似于if(c&10)的if条件和类似于if(c==10)的if条件。这是用javascript编写代码的正确方法吗 它是正确的(如中所示,它不是语法错误),但是&和==是不同的运算符 &是操作员=是操作员 当c为10时,c&10和c==10恰好在中起作用,原因是c&10返回真实值(实际上,10)c==10返回true(定义为truthy) 然而,c&10也适用于大量其他整数,这与c==10不同c&10将产生一个数字。 c==10将生成一个二进制值 var c=10; console.

我看到了类似于if(c&10)的if条件和类似于if(c==10)的if条件。这是用javascript编写代码的正确方法吗

它是正确的(如中所示,它不是语法错误),但是
&
==
是不同的运算符

&
是操作员
=
是操作员

c
10
时,
c&10
c==10
恰好在
中起作用,原因是
c&10
返回真实值(实际上,
10
c==10
返回
true
(定义为truthy)


然而,
c&10
也适用于大量其他整数,这与
c==10
不同
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
按位AND运算符使用两个整数的二进制表示形式,逐位比较二进制数字(0或1),并将生成一个新的整数,其响应位设置为1,当且仅当前两个数字中的对应位均为1时,否则该位将为0

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

比较 因为在无位位置有两个1

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

比较
因为在第3位有两个1。所以200和10是8,是比较,是按位,是两个完全不同的运算符。我认为如果c是一个数字,并且设置了它的“2”位或“8”位,那么c和10将是真的,否则为假(0)
  00001010
& 00010100
  -------- 
  00000000
     
  00001010
& 11001000
  -------- 
  00001000
      ^Here are two 1s