Mar*_*oma 64 javascript bitwise-operators logical-operators
JavaScript中&和&&之间的区别是什么?
例如,代码:
var first = 123;
var second = false;
var third = 456;
var fourth = "abc";
var fifth = true;
alert(first & second); // 0
alert(first & third); // 72
alert(first & fourth); // 0
alert(first & fifth); // 1
alert(first && second); // false
alert(first && third); // 456
alert(first && fourth); // abc
alert(first && fifth); // true
Run Code Online (Sandbox Code Playgroud)
似乎&&是一个逻辑"和",如果两者都是真的,它总是给我第二个值.
但是什么是&?
(顺便说一句,&&似乎是Python中的"和";&似乎是&在Python中.)
Rok*_*alj 118
& 是按位AND此运算符需要两个数字并返回一个数字.如果它们不是数字,它们会被转换为数字.
它是如何工作的?维基百科有一个答案:https://en.wikipedia.org/wiki/Bitwise_operation#AND
注意:在Javascript中,不鼓励使用此运算符,因为没有整数数据类型,只有浮点数.因此,浮动在每次操作之前都会转换为整数,从而使其变慢.此外,它在典型的Web应用程序中没有实际用途,并且产生不可读的代码.
一般规则:避免.不要使用它.它很少出现在可维护和可读的JS代码中.
&& 是合乎逻辑的它需要两个参数并返回:
这里有些例子:
0 && false 0 (both are false-y, but 0 is the first)
true && false false (second one is false-y)
true && true true (both are true-y)
true && 20 20 (both are true-y)
Run Code Online (Sandbox Code Playgroud)
如果你只在布尔值上使用它,那么这就是数学逻辑中的AND运算符.
&& 操作员链接此运算符定义如上的原因是运算符链接.您可以链接此运算符并仍然遵守上述规则.
true && 20 && 0 && 100 0 (it is the first false-y)
10 && 20 && true && 100 100 (last one, since all are true-y)
Run Code Online (Sandbox Code Playgroud)
&& 短路从定义中可以看出,只要您发现一个术语是假的,您就不必关心以下术语.Javascript甚至更进一步,这些术语甚至没有评估.这称为短路.
true && false && alert("I am quiet!")
Run Code Online (Sandbox Code Playgroud)
此语句不会提醒任何内容并false返回.因此,您可以使用&&运算符作为if语句的较短替换.这些是等价的:
if (user.isLoggedIn()) alert("Hello!")
user.isLoggedIn() && alert("Hello!")
Run Code Online (Sandbox Code Playgroud)
几乎所有的JS压缩器都使用这个技巧来节省2个字节.
dur*_*uri 21
&是按位"和".这意味着如果您将两个数字转换为二进制,则结果是一个数字,其1数字位于两个数字所具有的位置1.
100011 //35
& 111001 //57
---------
100001 //35 & 57 == 33
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
68718 次 |
| 最近记录: |