ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JavaScript中&和\u0026\u0026之间的区别是什么?

2019-09-15 15:46:29  阅读:1084  来源: 互联网

标签: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

好像和&&是一个逻辑“和”,如果两者都是真的,它总是给我第二个值.

但什么是&amp ;?

(顺便说一句,&&&&&和Python似乎是“和”;&和Python似乎是&).

解决方法:

&安培;是按位AND

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

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

注意:在Javascript中,不鼓励使用此运算符,因为没有整数数据类型,只有浮点数.因此,浮动在每次操作之前都会转换为整数,从而使其变慢.此外,它在典型的Web应用程序中没有实际用途,并且产生不可读的代码.

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

&安培;&安培;是合乎逻辑的

它需要两个参数并返回:

>第一个评估为false的术语
>上个学期,否则(如果一切都是真的)

这里有些例子:

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)

&安培;&安培;短路

从定义中可以看出,只要您发现一个术语是假的,您就不必关心以下术语. Javascript甚至更进一步,这些术语甚至没有评估.这称为短路.

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

此语句不会发出任何警报,并返回false.因此,你可以使用&&运算符作为if语句的较短替换.这些是等价的:

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

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

标签:javascript,bitwise-operators,logical-operators
来源: https://codeday.me/bug/20190915/1805304.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有