JavaScript逻辑运算符及优先级

今天看了一段YUI compressor压缩的js代码:

[code=”javascript”]
userNum && (ind += index,ind >= userNum && (ind -= userNum),ind < 0 && (ind === -2 && (ind = -1),ind += userNum),selLi.removeClass("on"),$(selLi[ind]).addClass("on")); [/code] 直接疯掉了,估计一下子没几个人能看懂。那么就把他“翻译”一下。 && (逻辑与)   这里主要是一个“&&”运算,首先要搞懂这个,看一个简单的例子: [code="javascript"] var a = 1 && 2 && 3;//3 var b = 0?&& 1 && 2;//0 var c = 1 && 0? && 2;//0 alert(a),alert(b),alert(c); [/code] 嘿嘿,写法很奇怪,运行的结果是3,0,0。一般我们在if语句中经常用到。“&&” (逻辑与) 运算和“||”运算真好相反,“&&” 运算遇到false就返回。 例如: a && b ,如果 a 为true,直接返回b,而不管b为true或者false 。如果 a 为false 那么直接返回a,上面例子中第一个var a = 1 && 2 && 3;因为1 && 2,1为真,返回2;2&&3, 2为真,返回3 。 搞懂了“&&” 运算,再来看最上的面的YUI compressor压缩的js代码,翻译一下: [code="javascript"] if(userNum){ ind += index; if (ind >= userNum) {
ind -= userNum
}
if(ind < 0){ if(ind === -2){ ind = -1; } ind += userNum; } selLi.removeClass("on"); $(selLi[ind]).addClass("on"); } [/code]   说来惭愧,年纪大了,足足“翻译”了半个小时,还是在同事的帮助下才“翻译”正确。 ||(逻辑或) 再来看看“||”(逻辑或)运算,看例子: [code="javascript"] var a = 0 || 1 || 2;//1 var b = 1 || 0 || 3;//1 alert(a),alert(b); [/code] “||”运算遇到true就返回。例如:a || b ,如果 a 为false,直接返回b,而不管b为true或者false 。如果 a 为true,直接返回a,而不会继续往下执行。 && (逻辑与) 和||(逻辑或)混合使用的时候要注意他们的优先级: && (逻辑与) 优先级高于||(逻辑或) return a && b || c , 根据a来判断返回值,a 是 false 则肯定返回 c;如果 b , c 都是 true ,那么我们就可以根据 a 来决定b 还是 c ,如果 a 是 false 则返回 c,如果a是true 则返回 b。 return a || b && c 根据优先级相当于先算 b && c ,然后和a 相 或;如果a是true,则返回a,不论是b或c,如果a是false,则如果b是false,返回b,如果b是true,返回c; [code="javascript"] var a = 3? && ?0 || 2; ?//2 var b = 3 || 0 && ?2; // 3 var c= 0 || 2 && 3; // 3 alert(a),alert(b),alert(c); [/code]  

赞(0) 打赏
未经允许不得转载:WEB前端开发 » JavaScript逻辑运算符及优先级

评论 12

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #-49

    直接用“,”隔开运语句,我好像用得很少!

    火跃8年前 (2011-07-06)回复
  2. #-48

    为了少两行代码,现在都用 && 当 if 用了啊

    kamal8年前 (2011-07-06)回复
  3. #-47

    只是不知道&&会不会比if高效, 如果效率一样, 那还是用if来得舒服

    phoetry8年前 (2011-07-06)回复
  4. #-46

    看得蛋疼……

    ghy8年前 (2011-07-06)回复
  5. #-45

    YUI优化后的代码本身就不需要考虑可读性,这样压缩后的代码,保证逻辑不变的前提下,能有更小的文件,加速网络传输和运行速度。话说GOOGLE的compiler更强大,不仅是压缩代码,还会对代码执行顺序进行优化。

    tency8年前 (2011-07-06)回复
  6. #-44

    +_+这也行,这是一个神奇的世界啊~~~

    Jankerli8年前 (2011-07-18)回复
  7. #-43

    以前看过&&,但工作以来一直都没用过,这样写最后以缩小代码,好像还挺不错的,只是不太熟悉的时候可能会使开发时间更长了纠结

    lovebslq8年前 (2011-08-18)回复
  8. #-42

    我都花了半分钟看懂逻辑,你看半个小时能看懂,不错了!o(∩_∩)o

    星火幽蓝7年前 (2011-11-06)回复

前端开发相关广告投放 更专业 更精准

联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏