gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 02:53:40 25 4
gpt4 key购买 nike

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

看起来 && 是一个合乎逻辑的 and 如果两者都是 true,它总是给我第二个值。

但是什么是&呢?

(顺便说一句,&&在Python中似乎是&在Python中似乎是& python )

最佳答案

& 是按位与

此运算符在 JavaScript 中几乎从未使用过。出于性能原因或处理二进制数据,其他编程语言(如 C 和 Java)使用它。在 JavaScript 中,它的性能有问题,我们很少使用二进制数据。

此运算符需要两个数字并返回一个数字。如果它们不是数字,则将它们转换为数字。

它是如何工作的? 维基百科有一个答案:https://en.wikipedia.org/wiki/Bitwise_operation#AND

&& 是逻辑与

大多数情况下,程序员使用此运算符来检查两个条件是否都为真,例如:

true && true        // returns true
true && false // returns false

然而,在 JavaScript 中,它被扩展为允许任何数据类型和任意数量的术语。它返回:

  • 评估为假的第一个术语
  • 否则为最后一项(如果所有条件都为 true-y)

这里有一些例子:

true && false && true         // returns false
true && 20 && 0 && false // returns 0 (it is first false-y)
10 && "Rok" && true && 100 // returns 100 (as all are true-y)

&&短路

从上面可以看出,只要找到那个词是false-y,就不用关心后面的词了。这允许 Javascript 完全停止计算。这称为短路。

此语句不提示任何内容并返回 false:

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

因此,您可以使用 && 运算符作为 if 语句的较短替代品。这些是等价的:

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

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

关于javascript - JavaScript 中的 & 和 && 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7310109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com