&
按位与
此运算符需要两个数字并返回一个数字。如果它们不是数字,则将它们转换为数字。
它是如何工作的?维基百科有一个答案:https : //en.wikipedia.org/wiki/Bitwise_operation#AND
注意:在 Javascript 中,不鼓励使用此运算符,因为没有整数数据类型,只有浮点数。因此,在每次操作之前,浮点数都会转换为整数,从而使其变慢。此外,它在典型的 Web 应用程序中没有实际用途,并且会生成不可读的代码。
一般规则:避免。不要使用它。它很少出现在可维护和可读的 JS 代码中。
&&
是逻辑 AND
它需要两个参数并返回:
- 第一个评估为假的术语
- 否则最后一项(如果全部为真-y)
这里有些例子:
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)
如果您只在布尔值上使用它,那么这正是数理逻辑中的 AND 运算符。
&&
操作符链接
上面定义这个运算符的原因是运算符链接。您可以链接此运算符并仍然保留上述规则。
true && 20 && 0 && 100 0 (it is the first false-y)
10 && 20 && true && 100 100 (last one, since all are true-y)
&&
短路
从定义中可以看出,只要你发现一个词是false-y,后面的词就不用关心了。Javascript 甚至更进一步,甚至没有评估这些术语。这称为短路。
true && false && alert("I am quiet!")
此语句不会发出任何警告并false
返回。因此,您可以使用&&
运算符来代替 if 语句。这些是等效的:
if (user.isLoggedIn()) alert("Hello!")
user.isLoggedIn() && alert("Hello!")
几乎所有的 JS 压缩器都使用这个技巧来节省 2 个字节。