JavaScript逻辑运算符及优先级
2013-11-13 17:43
369 查看
JavaScript逻辑运算符及优先级
今天看了一段YUI compressor压缩的js代码:userNum && (ind += index,ind >= userNum && (ind -= userNum),ind < 0 && (ind === -2 && (ind = -1),ind += userNum),selLi.removeClass("on"),$(selLi[ind]).addClass("on"));
直接疯掉了,估计一下子没几个人能看懂。那么就把他“翻译”一下。
&& (逻辑与)
这里主要是一个“&&”运算,首先要搞懂这个,看一个简单的例子:
1 | var a = 1 && 2 && 3; //3 |
2 | var b = 0 && 1 && 2; //0 |
3 | var c = 1 && 0 && 2; //0 |
4 | alert(a),alert(b),alert(c); |
例如: 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代码,翻译一下:
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"); }
说来惭愧,年纪大了,足足“翻译”了半个小时,还是在同事的帮助下才“翻译”正确。
||(逻辑或)
再来看看“||”(逻辑或)运算,看例子:
var a = 0 || 1 || 2; //1 |
var b = 1 || 0 || 3; //1 |
alert(a),alert(b); |
&& (逻辑与) 和||(逻辑或)混合使用的时候要注意他们的优先级:
&& (逻辑与) 优先级高于||(逻辑或)
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;
view sourceprint?http://write.blog.csdn.net/postedit/14136471
var a = 3 && 0 || 2; //2 |
var b = 3 || 0 && 2; // 3 |
var c= 0 || 2 && 3; // 3 |
alert(a),alert(b),alert(c); |
相关文章推荐
- JavaScript中逻辑运算符(&&、||、!)的优先级和运算顺序
- 【JavaScript操作符优先级及闰年的计算】
- javascript 运算优先级
- JavaScript中运算符的优先级
- Java 关系运算符、逻辑运算符和三元运算符,以及运算符优先级
- JavaScript 正则表达式RegExp(text方法/内部类/边界/量词/优先级/replace/trim)
- Javascript逻辑运算符“或”的应用
- JavaScript中逻辑运算符的使用
- javascript 逻辑运算符 && ||
- javascript定义变量和优先级的问题
- 探寻 JavaScript 逻辑运算符(与、或)的真谛
- php的逻辑运算符与优先级
- javascript运算符的优先级
- JavaScript运算优先级
- javascript关系运算符与逻辑运算符
- javascript逻辑运算符“||”和“&&”
- JavaScript备忘录-逻辑运算符
- JavaScript 逻辑运算符引发的一个小问题
- JavaScript定义变量和变量优先级问题探讨
- 11、JavaScript 比较和逻辑运算符