(|)和(||)之间有什么区别?

Buf*_*fon 18 javascript operators

Javascript |||Javascript有什么区别?

而且,&和之间有什么区别&&

Chr*_*rle 19

|是一个按位,或是||一个逻辑或.

按位或取两个数字并逐位比较它们,产生一个新的整数,它将两个输入的1位组合在一起.所以0101 | 1010会产生1111.

逻辑或||检查值的"真实性"(取决于类型,对于整数0,为假,非零为真).它从左到右评估语句,并返回第一个值为truthy的值.那么0101 || 1010回归0101哪个是真实的,因此整个陈述被认为是真实的.

相同类型的逻辑适用于&VS &&.0101 & 1010= 0000.但是0101 && 1010计算结果为1010(&&返回最后truthy值,只要两个操作数都truthy).

  • 然后确实是问号.不要使用按位"或"运算符,除非它是用于按位的东西. (5认同)
  • @Buffon - 对任何人来说,一个问号都应该足够了. (2认同)
  • _"但是逻辑或`||`只是检查两个输入的真值.所以`0101 || 1010`会产生真的"_ - 这在两个方面是错误的.首先,`||'使用短路评估,因此如果第一个操作数是"真实的",则根本不评估第二个操作数.其次,`||`不返回`true`或`false`,如果是truthy则返回第一个操作数的值,否则返回第二个操作数的值.所以`0101 || 1010`返回`0101`(或65,假设数字文字中的前导0使其成为八进制).''A'|| 'B''返回''A'. (2认同)

Gra*_*mas 12

区别在于逻辑运算符只考虑面值的每个输入,将它们视为整体,而按位运算符在位级工作:

var thetruth = false;
var therest = true;

var theuniverse = thetruth && therest; //false
var theparallel = thetruth && thetruth; //true

var theindifferent = thetruth || therest; //true
var theideal = thetruth || thetruth; // false

var thematrix = 5346908590;
var mrsmith = 2354656767;

var theoracle = thematrix & mrsmith; //202445230
var theone = thematrix | mrsmith; //7499120127
Run Code Online (Sandbox Code Playgroud)

  • @Buffon后者对任何非数字类型返回false. (2认同)