当前位置: 首页 > 面试题库 >

JavaScript中的&和&&有什么区别?

马星阑
2023-03-14
问题内容

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

似乎&&是一个逻辑上的“和”,如果两个都为true,则总是为我提供第二个值。

但是什么是&?

(顺便说一下,&&在Python中似乎是“ and”;&在Python中似乎是&。)


问题答案:

& 是按位AND

该运算符期望 两个数字 并重新调整一个 数字。 如果它们不是数字,则将其强制转换为数字。

注意: 在Javascript中, 不建议 使用此运算符
因为没有整数数据类型,只有浮点数。因此,浮点数在每次操作之前都会转换为整数,从而使其变慢。而且,它在典型的Web应用程序中没有真正的用途,并且会产生无法读取的代码。

一般规则:避免。 不要使用它。它很少放在可维护和可读的JS代码中。

&& 是逻辑与

它需要两个参数并返回:

  • 第一项评估为假
  • 否则为最后一项(如果全部为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)
&& 短路

从定义中可以看出,一旦您发现一个术语为假y,就不必关心以下术语。Javascript甚至更进一步,术语甚至都没有评估。这称为短路。

true && false && alert("I am quiet!")

该语句不发出任何警告,false并返回。因此,可以将&&运算符用作if语句的更短替代。这些是等效的:

if (user.isLoggedIn()) alert("Hello!")
user.isLoggedIn() && alert("Hello!")

几乎所有的JS压缩程序都使用此技巧来节省2个字节。



 类似资料:
  • 问题内容: 我发现自己使用JavaScript,并且遇到了和属性。我想知道它们之间有什么区别。也是一个比另一个更好? 问题答案: 了解这是Element的属性。1只有Elements具有,并且这些子元素都是Element类型的。2 但是,这是Node的属性。可以包含任何节点。3 一个具体的例子是: 大多数情况下,您想使用它,因为通常您不想在DOM操作中遍历Text或Comment节点。 如果确实要

  • 问题内容: 我想知道JavaScript 和之间的区别。 问题答案: 在JavaScript中,表示变量已被声明但尚未分配值,例如: 是分配值。可以将其分配给变量,以表示没有值: 从前面的示例中可以明显看出,和是两个不同的类型:是类型本身(未定义),而是对象。 和

  • 问题内容: 他们两个都应该引用同一个对象吗? 问题答案: 根据W3C,它们是相同的。实际上,出于跨浏览器安全的考虑,您应该使用而不是。

  • 问题内容: 在学习电子时,我发现了两种获取BrowserWindow对象的方法。 和 和之间有什么区别? 我不明白为什么可以使用。我是否想念有关JS的重要信息? 问题答案: 这两段代码是等效的,但是第一段代码使用的ES6分解分配要短一些。 这是一个如何工作的简单示例:

  • 问题内容: 我一直想知道 为什么? 是JScript和JavaScript之间的区别。 问题答案: 真正的ECMAScript只是不同的名称。约翰·雷西格(JohnResig)有一个很好的解释。 以下是完整的版本明细: IE 6-7支持JScript 5(相当于ECMAScript 3,JavaScript 1.5) IE 8支持JScript 6(与ECMAScript 3,JavaScript

  • 问题内容: JavaScript和Java有什么区别? 问题答案: Java和Javascript相似,例如Car和Carpet相似。