zl程序教程

您现在的位置是:首页 >  前端

当前栏目

Javascript的&&和||的另类用法

JavaScriptamp 用法 另类
2023-06-13 09:15:39 时间

最近也没什么心思写文章了,感觉总有忙不完的事情,呵。不过这些天又开始研究起Titanium来,发现其官方出品的MVC框架(Alloy)还是挺不错的,刚开始苦于没有好的代码来学习,文档又少,所以一直没去详细研究,后来发现原来官方的CodeStrong就是一套非常不错的学习代码,只要看通了其整套代码,相信对Alloy的使用也基本会了~

在看其源码的同时,发现很多地方使用了诸如以下的用法:

$.clouds&&($.index.add($.clouds));

开始不是很理解,毕竟平时这样用的也少,上了下google后才知道原来这样写法非常方便好用(其实jquery的源码里也大量使用此方法)。以下引用一段网上找到的解释&&和||在javascript中的另类用法:

a()&&b():如果执行a()后返回true,则执行b()并返回b的值;如果执行a()后返回false,则整个表达式返回a()的值,b()不执行;

a()||b():如果执行a()后返回true,则整个表达式返回a()的值,b()不执行;如果执行a()后返回false,则执行b()并返回b()的值;

&&优先级高于||

看完后就相当清楚了,再看看具体代码:

alert((1&&3||0)&&4);//结果4①
alert(1&&3||0&&4);//结果3②
alert(0&&3||1&&4);//结果4③

分析:
语句①:1&&3返回3=>3||0返回3=>3&&4返回4
语句②:先执行1&&3返回3,在执行0&&4返回0,最后执行结果比较3||0返回3
语句③:先执行0&&3返回0,在执行1&&4返回4,最后执行结果比较0||4返回4

注:非0的整数都为true,undefined、null和空字符串””为false。

感觉javascript确实挺强挺灵活的哦,呵呵~~