`

JavaScript逻辑运算符及优先级

 
阅读更多
今天看了一段YUI compressor压缩的js代码:
1 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);

嘿嘿,写法很奇怪,运行的结果是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代码,翻译一下:
01 if(userNum){
02 ind += index;
03 if (ind >= userNum) {
04 ind -= userNum
05 }
06 if(ind < 0){
07 if(ind === -2){
08 ind = -1;
09 }
10 ind += userNum;
11 }
12 selLi.removeClass("on");
13 $(selLi[ind]).addClass("on");
14 }



说来惭愧,年纪大了,足足“翻译”了半个小时,还是在同事的帮助下才“翻译”正确。

||(逻辑或)

再来看看“||”(逻辑或)运算,看例子:
1 var a = 0 || 1 || 2;//1
2 var b = 1 || 0 || 3;//1
3 alert(a),alert(b);

“||”运算遇到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;
1 var a = 3  &&  0 || 2;  //2
2
3 var b = 3 || 0  &&  2; // 3
4
5 var c= 0 || 2 && 3; // 3
6 alert(a),alert(b),alert(c);
分享到:
评论

相关推荐

    运算符的优先级顺序.docx

    条件运算符的优先级高于赋值运算符但低于逻辑运算符。 逻辑运算符包括逻辑与"&&"和逻辑或"||"。逻辑与的优先级高于逻辑或,这使得你可以编写更复杂的条件表达式。 最低优先级的运算符是逗号运算符",",它允许在同一...

    javaScript 运算符优先级

    JavaScript 运算符优先级是JavaScript语言中一个重要的概念。它决定了在没有括号明确指定执行顺序的情况下,多个运算符一起出现在表达式中时运算执行的顺序。掌握运算符优先级有助于我们编写出更准确无误的代码,...

    js运算符优先级

    在JavaScript编程中,运算符优先级决定了表达式中的运算执行顺序。如果没有明确指定运算顺序,表达式就会根据默认的优先级进行计算。在给定的文件内容中,列出了2019年JavaScript中运算符的优先级列表,这对于编写...

    javascript运算符——逻辑运算符全面解析

    逻辑运算符对操作数进行布尔运算,经常和关系运算符一样配合使用。逻辑运算符将多个关系表达式组合起来组成一个更复杂的表达式。逻辑运算符分为逻辑非’!’、逻辑与’&&’、逻辑或’||’3种,本文将介绍这三种逻辑...

    javascript运算符语法全面概述_.docx

    JavaScript的运算符分为14个优先级等级,从高到低依次为:一元运算符、算术运算符、比较运算符、逻辑运算符、三元运算符、赋值运算符和逗号运算符。例如,`!`的优先级高于`*`,所以在`!214*3+1`这个表达式中,`!`会...

    浅谈JavaScript中运算符的优先级

    JavaScript作为广泛使用的编程语言之一,其运算符优先级规则对代码执行逻辑有至关重要的影响。本文将详细介绍JavaScript中运算符的优先级,包括不同种类的运算符以及如何通过它们来控制代码的执行顺序。 在...

    8.3 逻辑运算符.7z

    在编写复杂的布尔表达式时,了解运算符优先级非常重要,以确保代码按预期执行。 6. **条件语句中的应用**:逻辑运算符常用于`if`、`while`、`for`等条件语句中,帮助决定代码块是否执行。例如,`if (a &gt; 5 && b )`...

    JavaScript逻辑运算符相关总结

    JavaScript中的逻辑运算符是编程中不可或缺的部分,它们用于处理布尔逻辑和进行条件判断。本文将深入探讨这些运算符的工作机制、用法以及一些常见的陷阱。 首先,我们要了解逻辑运算符的优先级。在JavaScript中,...

    JS运算符优先级与表达式示例详解

    JavaScript中的运算符优先级是理解和编写复杂表达式的关键。它决定了不同运算的执行顺序,避免了不必要的括号使用。在JS中,运算符优先级分为多个级别,级别越高,运算符执行越早。例如,乘法和除法的优先级高于加法...

    4.9优先级1

    首先,我们要理解,当没有明确的括号来指定计算顺序时,JavaScript会按照预定义的运算符优先级进行计算。例如,乘法和除法的优先级高于加法和减法。在文件中提到的例子中,`alert(2*3+4)` 这样的表达式会被...

    javascript实现优先级计算器

    优先级计算涉及的运算符优先级规则也是JavaScript中的重要概念。 2. **数学逻辑**:优先级计算器的基础是数学中的运算符优先级规则,例如括号内的计算先于括号外,乘除先于加减,指数运算优先级最高等。理解和应用...

    具有优先级的计算器 实现

    - 在这个函数中,你可以实现解析表达式、处理运算符优先级、计算操作数以及处理括号的逻辑。 6. **用户界面**: - 为了创建一个用户友好的计算器,我们需要一个前端界面。可以使用HTML和CSS构建UI,然后用...

    javascript表达式和运算符详解.docx

    javascript 运算符还可以根据功能来分类:赋值运算符、比较运算符、算数运算符、位运算符、字符串运算符、逻辑运算符等。 赋值运算符用于将值赋给变量,例如 x += 1。 比较运算符用于比较两个值,例如 a == b。 ...

    JavaScript 入门&#183;JavaScript 具有全范围的运算符

    JavaScript是一种广泛使用的前端脚本语言,它的运算符系统非常完备,支持算术运算符、逻辑运算符、位运算符、赋值运算符等,以及一些特殊的运算符。下面我们详细介绍一下这些运算符。 首先,算术运算符是最基本的...

    1902_陈良鑫_02JavaScript运算符.docx

    JavaScript 运算符可以分为五大类:算数运算符、关系运算符、逻辑运算符、赋值运算符和条件运算符。 算数运算符 算数运算符用于对数值进行操作,包括加、减、乘、除、取模、自增和自减等操作。例如: * `+` 可以...

    前端练习题 代码敲烂月薪过万.docx

    本资源是一份前端练习题,涵盖了多个知识点,包括事件委托、ES6、新特性、JavaScript运行环境、事件处理、JavaScript数据类型、运算符优先级等。 1. 事件委托:事件委托是指将事件处理程序附加到父元素上,而不是每...

    _02JavaScript运算符.docx

    - 算术运算符 &gt; 关系运算符 &gt; 逻辑运算符 &gt; 赋值运算符。 - 在运算过程中,遵循先乘除后加减,有括号先算括号内的规则。 例如,以下代码片段展示了运算符优先级的使用: ```javascript var a = 5, b, sum; b = ...

    字符串转表达式,进行加减乘除等逻辑运算

    如果是运算符,根据运算符的优先级与栈顶运算符的优先级比较,如果当前运算符优先级更高或相等,则将栈顶运算符弹出并输出,然后将当前运算符压入栈;遇到左括号则压入栈,遇到右括号则将栈顶运算符弹出直到遇到左...

    网页制作-在线作业_E.pdf

    6. **逻辑运算符**:在JavaScript中,逻辑运算符的优先级是`NOT` &gt; `AND` &gt; `OR`。`AND`运算符的优先级高于`OR`。 7. **CSS基本语法**:CSS的选择器包括类选择器(`.class`)、ID选择器(`#id`)以及元素选择器(如...

Global site tag (gtag.js) - Google Analytics