`
uule
  • 浏览: 6352920 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

JS逻辑运算符及优先级

    博客分类:
  • JS
 
阅读更多

javascript真假值
所有为假的值

false

null

数字 0

字符串 ''

 数字NaN

undefined


其它所有的值都被当作真值,包括字符串'false',true,以及对象。

 

JavaScript逻辑运算符及优先级
a && b 

       如果 a 为true,直接返回b,而不管b为true或者false 。如果 a 为false 那么直接返回a
a || b 

       如果 a 为true,直接返回a,而不会继续往下执行。如果 a 为false,直接返回b,而不管b为true或者false 。

 

例1:

今天看了一段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"));

  

直接疯掉了,估计一下子没几个人能看懂。那么就把他“翻译”一下。
&& (逻辑与)
这里主要是一个“&&”运算,首先要搞懂这个,看一个简单的例子:

var a = 1 && 2 && 3;//3
var b = 0 && 1 && 2;//0
var c = 1 && 0  && 2;//0
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 。

var a = 0 || 1 || 2;//1
var b = 1 || 0 || 3;//1
alert(a),alert(b);

  

搞懂了“&&” 运算,再来看最上的面的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");
}

 

 && (逻辑与) 和||(逻辑或)混合使用的时候要注意他们的优先级:
&& (逻辑与) 优先级高于||(逻辑或)

 

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;

var a = 3  &&  0 || 2;  //2 
var b = 3 || 0  &&  2; // 3 
var c= 0 || 2 && 3; // 3
alert(a),alert(b),alert(c);

 

 本例来源:http://www.css88.com/archives/3770

 

例2:

每个逻辑表达式都是有返回值的,但这个值并不一定是布尔变量,下面分别介绍:
(1)与操作符(&&)
javascript依次获取每一个操作数,将它们转换为布尔变量,如果是false,则直接返回这个操作数的值(注意,返回的是转换前的原值,不一定是布尔类型),中断后面操作数的处理;否则继续处理下一个操作数。如果直到最后一个操作数仍然对应布尔变量true,则返回最后这个操作数的值,下面的代码演示了其执行原理:

var a="1" && true && 0 && false && "abc";
alert(a);  //可见a的值是0
var b="abc" && true && "123";
alert(b);  //可见b的值是"123";

  

(2)或操作符(||)
javascript依次获取每一个操作数,将它们转换为布尔变量,如果是true,则直接返回这个操作数的值,中断后面操作数的处理;否则继续下一个操作数。如果知道最后一个操作数仍然对应布尔变量false,则返回这个操作数的值。下面的代码演示了其执行原理:

var a="abc" || "123";
alert(a);  //可见a的值是"abc"
var b=false || "" || 0;
alert(b);  //可见a的值是0

  

(3)非操作符(!)
和前两种操作符不同,非操作符始终返回布尔类型的变量 ,例如:

var a=! "abc";
alert(a);  //显示a的值为false

 

 本例来源:http://www.itlearner.com/article/3084

。。。

分享到:
评论
1 楼 inotgaoshou 2011-09-06  
转了,很不错!

相关推荐

    运算符的优先级顺序.docx

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

    js运算符优先级

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

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

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

    javaScript 运算符优先级

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

    8.3 逻辑运算符.7z

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

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

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

    4.9优先级1

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

    具有优先级的计算器 实现

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

    javascript实现优先级计算器

    可以考虑使用栈数据结构来处理运算符优先级,或者使用已有的库,如`math.js`,它提供了解析和计算数学表达式的能力。 8. **用户界面**:虽然不是技术细节,但良好的用户界面设计可以提升用户体验。这可能包括按钮...

    JavaScript逻辑运算符相关总结

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

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

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

    浅谈JavaScript中运算符的优先级

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

    js利用与或运算符优先级实现if else条件判断表达式

    `if...else`语句是最常见的选择,但有时候为了代码的简洁性,我们可以利用运算符的优先级来实现类似的逻辑。本文将深入探讨如何利用与(`&&`)、或(`||`)运算符的优先级来实现`if...else`条件判断表达式。 首先,我们...

    浅谈JS运算符&&和|| 及其优先级|angluo-javascript-159717.pdf

    JS中的逻辑运算符包括逻辑与(&&)和逻辑或(||),它们是用于执行逻辑关系的比较运算符。它们在编程中非常重要,尤其是在条件语句中,用于在多个条件之间进行逻辑判断。 逻辑与(&&)运算符的特点是,只有当两个操作数都...

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

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

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

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

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

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

    Java中常见的几种运算符.doc

    这些符号可以分为七类:算术运算符、关系运算符、位运算符、逻辑运算符、移位运算符、三元运算符和赋值运算符。 一、算术运算符 算术运算符是指用于执行算术运算的符号,例如 +、-、*、/、% 等。这些符号可以用来...

Global site tag (gtag.js) - Google Analytics