javaScript/jQuery的&&和||的学习记录

之前看别人项目上的源码时,就看到了项目中大量的使用了&&和||的符号进行代码的编写,今天就记录一下,我之前学习的心得。
文中会多次用到“!”的符号,表示“非”的意思。

规则一:a||b,当!!a为true时,返回值则为a,当!!a为false时,返回值为b

1
2
alert(4||5);//弹出4;详解:!4时为false,!!4即!false,故返回值为true
alert(0||5);//弹出5;详解:0在解析时会直接解析为boolean值,0的boolean值为false,!0则为true,!!0==!true==false,所以弹出5。

规则二:a&&b,当!!a为true时,返回值则为b,当!!a为false时,返回值为a

1
2
alert(4&&5);//弹出5;原因:!!4返回true,详解同上。
alert(0&&5);//弹出0;原因:!!0返回false,详解同上。

规则三:&&的优先级高于||

1
2
alert(1&&(3||0&&4));//弹出3;详解:0&&4,返回0,就变成1&&(3||0),先执行括号中的,3||0返回3,接着就变成了1&&3,再由规则二就可知返回值为3。
alert(0&&4||2&&3);//弹出3;详解:0&&4,返回0,就变成0||2&&3,2&&3返回3,接着0||3,由规则一就可知返回值为3。

这样是不是就能明白&&和||的规则了呢。
接着再举几个下例子。

1
2
3
callback&&callback();//这句话与if(callback){callback()};的语句是能达到同样的效果。
this.count = this.count || 0;//实现简单的计数器时常用。
var obj = obj || {};//这句话一般用于传参的obj,做个初始化。

今天就写这些,看到这篇博客的你,到这里就应该明白&&和||的使用规则了。
要注意一个问题,这样写代码会降低代码的可读性,但能精简代码,减少网络流量。