A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© quanhui 黑马帝   /  2011-11-17 12:17  /  1837 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我知道JavaScript中&和&&都代表与的意思,这两个有什么区别呢?==和===有什么不同,最好有例子解释下。谢谢。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

2 个回复

倒序浏览
咪咪 来自手机 黑马帝 2011-11-17 12:49:57
沙发
&代表非简洁运算符就是必须判断符号两端的值才进行与运算,如:3>5&5>3那么就会把与号两端计算出值后再与,而如果使用&&则当判断符号左边为假时就部运算右边的表达式。至于==和===后者表示绝对运算,意思就是完全相等。前者相对模糊。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
本帖最后由 潜王伟 于 2011-11-17 13:50 编辑

1.&和&&
性能上的比较

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

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

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

逐位运算

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

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,再进行逐位运算。也正是由于&和|是逐位运算符,才出现了第一点中所说的,它们总是要比较两个运算数才得出结果,才导致性能会比&&和||低一些。

2、==和===
给定 x=5

==  等于             x==8 为 false
=== 全等(值和类型) x===5 为 true;x==="5" 为 false

评分

参与人数 1技术分 +3 收起 理由
admin + 3 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马