JS的&&和&||和|运算符两个不同点

2016-02-20 00:33 32 1 收藏

下面图老师小编要向大家介绍下JS的&&和&||和|运算符两个不同点,看起来复杂实则是简单的,掌握好技巧就OK,喜欢就赶紧收藏起来吧!

【 tulaoshi.com - Web开发 】

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)1.性能上的比较

如果&&的第一个运算数是false,就不再考虑第二个运算数,直接返回false;如果||的第一个运算数是true,也不再考虑第二个运算数,直接返回true。&和|运算符却不是这样的,它们总是要比较两个运算数才得出结果,因而性能上&&和||会比&和|好。

由于&&和||可能不考虑第二个运算数,所以我们应尽量避免在它们右边使用具有副作用(赋值、递增、递减和函数调用)的表达式,除非非常清楚自己再做什么。

if((a == null) && (b++ 10)) stop(); //b++递增运算可能不被执行
if((b++ 10) && (a == null)) stop(); //保证b++递增运算都被执行
2.逐位运算

&和|除了可以进行"逻辑运算"[1]外,还可以进行逐位运算,而&&和||只能进行逻辑运算。

3.JS的&和|与C#的&和|

在JS中,&和|只是逐位运算符,而在C#中,&和|既是逻辑运算符,又是位运算,通过以下代码可以看出。

document.write(true & false); //JS,结果为0
document.write(1 & 0); //JS,结果为0
bool a = true & false; //C#,结果为false
int b = 1 & 0; //结果为0

注[1]:&和|本是逐位运算符,之所以可以进行"逻辑运算",是由于JS是无类型的语言、各数据类型可以自由转换这一特性决定的,当用&和|进行"逻辑运算"时,实际上true被转换成1,false被转换成0,再进行逐位运算。也正是由于&和|是逐位运算符,才出现了第一点中所说的,它们总是要比较两个运算数才得出结果,才导致性能会比&&和||低一些。

来源:https://www.tulaoshi.com/n/20160220/1632099.html

延伸阅读
运 算 符 指 明 对 操 作 数 所 进 行 的 运 算 。 按 操 作 数 的 数 目 来 分 ,可 以 有 一 元 运 算 符 (如 ++、 -),二 元 运 算 符 (如 +、 >)和 三 元 运 算 符 (如 ?:),它 们 分 别 对 应 于 一 个 、 两 个 和 三 个 操 作 数 。 对 于 一 元 运 算 符 来 说 ,可 以 有 前 缀 表 达 式 (如 ++i )和 后 缀 表 达 式 (如 i++),...
1.简介 EXCEPT和INTERSECT运算符使您可以比较两个或多个SELECT语句的结果并返回非重复值。 2.区别 EXCEPT运算符返回由EXCEPT运算符左侧的查询返回、而又不包含在右侧查询所返回的值中的所有非重复值。 INTERSECT返回由INTERSECT运算符左侧和右侧的查询都返回的所有非重复值。 3.注意事项 (1).使用EXCEPT或INTERSECT比较的结果集必须...
标签: Web开发
今天看一个JS的脚本,发现里面有一句话是这样子写的 var obj = document.getElementById("btn1") || document.getElementById("btn2"); 我觉得这个很奇怪,去查了一下||符号的意思,官方的说法是,逻辑或运算,我理解的应该是返回TRUE或FALSE吧,可以神奇的是JAVSCRIPT居然把可以找到的对象返了回来,我做了个试验,在页面上放一个按...
整数间执行除法运算时,要使用""而不是"/"。"/"运算符要求返回一个单一数值,所以,表面上看似简单的一行代码: C=A/B 实际上包含了3个隐含的转换操作:2个为除法运算做准备,从Integer转换到Single;一个完成最后的赋值操作,从Integer转换到Single。但是如果使用了""操作符,情况就大不相同了!不仅不会有这么多中间步骤,...
标签: Web开发
JavaScript中new运算符是创建一个新对象。使用方法: new constructor[(arguments)] 其中constructor是必选项。对象的构造函数。如果构造函数没有参数,则可以省略圆括号。 arguments是可选项。任意传递给新对象构造函数的参数。 JavaScript中new运算符说明 new 运算符执行下面的任务: 创建一个没有成员的对象。 为那个对象调用构造函数...

经验教程

762

收藏

63
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部