What's the difference between & and && in Ja
What's the difference between & and && in JavaScript?
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中似乎是and
;&
似乎是Python中的&
)
&
是位与
这个操作符是,在JavaScript中几乎从不使用。其他编程语言(如C和Java)出于性能原因或处理二进制数据而使用它。在JavaScript中,它的性能有问题,而且我们很少使用二进制数据。
该操作符期望两个数,并返回一个数。如果不是数字,则将其强制转换为数字。
它是如何工作的?维基百科有一个答案:https://en.wikipedia.org/wiki/Bitwise_operation#AND
&&
是逻辑与
通常,程序员使用该操作符检查两个条件是否都为真,例如:
true && true // returns true
true && false // returns false
然而,在JavaScript中,它被扩展为允许任何数据类型和任何数量的术语。它返回:
- 第一个求值为false的项
- 最后一学期(如果全部为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)
&&
短路
从上面可以看出,只要你发现其中一项是假的,你就不需要关心后面的项。这允许Javascript完全停止求值。这叫做短路。
这个语句不警告任何东西,返回false
:
true && false && alert("I am quiet!") // returns false
因此,可以使用&&
操作符来代替if语句。它们是等价的:
if (user.isLoggedIn()) alert("Hello!")
user.isLoggedIn() && alert("Hello!")
几乎所有JS压缩器都使用这个技巧来节省2字节。
&
是位"answers"。这意味着,如果你把两个数字转换成二进制,结果是一个数字在两个数字都有1
的位置上有1
的数字。
100011 //35
& 111001 //57
---------
100001 //35 & 57 == 33
要确定两个布尔值放在一起是真还是假,如果您想同时检查它们(如在网页上验证),您可以使用&
操作符。&
是位与。
对于&&
操作符,一旦发现第一个值为false,它将结束计算,而不检查第二个值。
在所有这些崇高而详细的见解中,他们大多忽略了一个事实,即存在一个条件计算,其中只有单个&将工作。实用的外行人的回答,解决了我的头打在IF语句字符串的多个链接&&条件的每个!==都导致了失败,需要合法地使用单个&我要感谢杰克·韦恩(和威少)的不公平的被否决的答案,他们的答案是正确的,因为有不止一个。== =它已经停止了它的求值,并且在找到第一个求值后不再继续==!和&&在第一次求值显示后,它认为它的工作完成了!== [eg]。假)。我的错误代码是
IF ((sessionStorage.myLable !== "LableStringA") && (sessionStorage.myLable !== "LableStringB") && (sessionStorage.myLableZ !== "LableStringA") && (sessionStorage.myLableZ !== "LableStringB")) { ...)
在这里,正确替换和使用单个&对于&&这在现实世界和技术上都是正确的答案。再次感谢Jake Wayne(和Russ)对代码的洞察力和理解。
- jquery点击函数select&取消选择
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- Angular js-返回一个包含类似
- 一点javascript元编程&可链接的设置器
- 通过JSON&比较时间
- Jquery模板,如果xx&&如果yy
- Selenium WebDriver and JavaScript change
- jQuery工具验证器自定义效果-添加&消除影响
- Twitter引导程序Typeahead-Id&标签
- AngularJS&JSON-从Previous&下一个对象
- 什么是&&在没有if的行中的变量之间
- 关于引入外部javascript文件的问题&css通过https
- 指令的模板必须只有一个根元素:With restrict E&替换true
- 使用ajax的服务器端分页&jQuery
- Javascript,如果条件在没有&&逻辑运算符当&&它不起作用
- 如何使用dropzone&vueJs
- 如何准确执行加载脚本&退出弹出窗口
- 如何添加CSS&JavaScript进入Windows窗体应用程序C#.net
- Solr查询以按日期月份获取数据&年
- CSS选择器与And操作组合'&&'