在ECMAScript中提供了Boolean()转换函数以及三个布尔操作符,这三个布尔操作符分别为逻辑非、逻辑与、逻辑或,这三个操作符通常用作于某些值的求反,比较模式等。学好这一点知识也非常的重要,奠定了以后在一些比较模式中基础。

Boolean()转型函数

Boolean()转型函数可以对任何类型的值进行转换为一个有效的布尔值,它的转换规则如下:

  1、Boolean值:true转换结果为true,false转换结果为false。
  2、String值:非空字符转换为true,空字符转换为false。
  3、Number值:任何非零数值以及Infinity转换为true,零以及NaN转换为false。
  4、Object值:任何对象转换为true,null转换为false。
  5、Undefined:所有Undefined值均转换为false。

逻辑非(!)

逻辑非只有一个操作数,逻辑非由一个感叹号组成,逻辑非可以应用于所有类型的值并且返回一个布尔值,逻辑非在进行操作的时候首先会利用Boolean()转型函数对操作数进行转换为一个布尔值,然后在对其值进行求反并返回这个布尔值。如:

 var test1 = null; var test2 = “wuyizhou”;
 var test3 = 123;
 !test1; 返回true;
 !test2; 返回false;
 !test3; 返回false;

逻辑与(&&)

逻辑与有两个操作数,逻辑与由两个和符号构成”&&”,逻辑与是一个短路操作,也就是它有些时候可以通过一边的值来确定结果。逻辑与对于布尔值的运算规则如下:

第一个值为true的时候,会对第二个值进行判断,如果第二个值为true则返回true,如果第二个值为false则返回false。
如果两个值中第一个值是false逻辑与运算就不继续判断第二个值了,因为判断第二个值是属于无意义的,就算第二个值是true也不能改变结果。
逻辑与对于其他类型值的操作返回的值和上面的规则很相似,但是返回的值是操作值的类型,可以这样来想”在逻辑与进行其他类型值运算的时候,在内部隐式的用Boolean()转型函数转换为布尔值,然后对其进行运算,但是返回的值还是原操作数值”。逻辑与对于其他类型值的运算规则其实可以用前一段话来想,然后对其用布尔值的方式进行运算,就很简单的理解了逻辑与操作符。

逻辑与的运算规则如下:
  两个操作数都为true的时候返回第二个操作数原值
  第一个操作数为false的时候返回第一个操作数原值
  第二个操作数为false的时候返回第二个操作数原值

逻辑或(||)

逻辑或有两个操作数,逻辑或由两个竖线符号构成”||”,逻辑或是一个短路操作,也就是它有些时候可以通过一边的值来确定结果。逻辑或对于布尔值的运算规则如下:

第一个值为true的时候,则返回true,因为第二个值就算为false也不会对结果产生影响。
第一个值是false逻辑或会继续对第二个值进行判断,如果第二个值为true则返回true,如果第二个值为false,则返回false。
逻辑或对于其他类型值的操作返回的值和上面的规则很相似,但是返回的值是操作值的类型,可以这样来想”在逻辑或进行其他类型值运算的时候,在内部隐式的用Boolean()转型函数转换为布尔值,然后对其进行运算,但是返回的值还是原操作数值”。逻辑或对于其他类型值的运算规则其实可以用前一段话来想,然后对其用布尔值的方式进行运算,就很简单的理解了逻辑或操作符。

逻辑或的运算规则如下:
第一个操作数为true的时候则返回第一个操作数原值 第一个操作数为false的时候
第二个操作数为true则返回第二个操作数原值
两个数都为false的时候则返回第二个操作数原值。

ECMAScript布尔操作符的更多相关文章

  1. js中等性操作符(==)、关系操作符(<,>)和布尔操作符(!)比较规则

    最近一直在笔试面试,经常碰到例如 123=='123'.'abc'==true等问题,其中有答对的,也有答错的,主要原因还是对ECMAScript的规范没有理解清楚,很多题目没有具体分析所导致.现查阅 ...

  2. Javascript 布尔操作符总结

    在一门编程语言中,布尔操作符的重要性堪比相等操作符.如果没有测试两个值关系的能力,那么诸如if...else和循环之类的语句就不会有用武之地了.在像javascript这样弱类型语言更有其妙用,让我们 ...

  3. JavaScript操作符(布尔操作符、乘性操作符和加性操作符)

    布尔操作符 布尔操作符用来测试两个值的关系,布尔操作符有三个,逻辑非(!).逻辑与(&&),逻辑或(||). 逻辑非由一个叹号(!)组成,可以应用于JavaScript任何值.逻辑非首 ...

  4. C# 使用布尔操作符

    布尔操作符(Boolean operator)是求值结果要么为true,要么为false的一种操作符.C#提供了几个非常有用的布尔操作符,其中最简单的是NOT(求反)操作符,它使用感叹号(!)来表示. ...

  5. RxJava2实战---第六章 条件操作符和布尔操作符

    RxJava2实战---第六章 条件操作符和布尔操作符 RxJava的条件操作符主要包括以下几个: amb():给定多个Observable,只让第一个发射数据的Obsrvable发射全部数据. de ...

  6. JavaScript布尔操作符

    布尔操作符 逻辑与 (&&) 逻辑与操作可以应用于任何类型的操作数,当有一个操作数不是布尔值的情况下,逻辑与操作就不一定返回布尔值 如果第一个操作数是对象,则返回第二个操作数 如果第二 ...

  7. ECMAScript一元操作符

    在ECMAScript中提供了一元操作符进行简单的运算,一元操作符是ECMAScript中最简单的操作符,它只能对一个值进行操作. 一元操作符有两种类型,一种是递增和递减操作符,一种是一元加和一元减操 ...

  8. ECMAScript位操作符

    在ECMAScript中,有少数的几个操作符可以对二进制位进行直接操作,这几个操作符本身直接对二进制进行操作,所有它们的本身是非常效率的,学习这一段有助于以后的优化以及理解. ECMAScript中采 ...

  9. Operation之条件和布尔操作符

    amb 当传入多个Observable到amb操作符时, 他将取第一个发生元素或产生事件的Observable, 然后只发出他的元素. 并且忽略其他的Observable let subject191 ...

随机推荐

  1. Codeforces Round #324 (Div. 2) A. Olesya and Rodion 水题

    A. Olesya and Rodion Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/584/p ...

  2. [Practical Git] Diagnose which commit broke something with git bisect

    Sometimes you find a bug in your project that has been around for a while without being noticed; it ...

  3. select poll使用

    select poll使用     2.1. 怎样管理多个连接?“我想同一时候监控一个以上的文件描写叙述符(fd)/连接(connection)/流(stream),应该怎么办?” 使用 select ...

  4. Centos内核升级的三种方法

    本文出自 “存储之厨” 博客,请务必保留此出处http://xiamachao.blog.51cto.com/10580956/1755354 在基于CentOS平台的工作过程中,难免有时需要升级或者 ...

  5. [017]string类使用注意事项

    最近自己写着玩,写了一个这样的函数: void foo(const string& iStr) { ; i < iStr.length(); ++i) { string str = iS ...

  6. Socket之UDP发送文件

    内容导航 一. Socket之UDP异步传输文件    二.Socket之UDP异步传输文件 三.Socket之UDP异步传输文件-多文件传输和文件MD5校验 四.Socket之UDP异步传输文件-用 ...

  7. Route Filters

    Route Filters The Controller's Middleware, represents a High-Level processing API, executed by the r ...

  8. Unit Testing a zend-mvc application

    Unit Testing a zend-mvc application A solid unit test suite is essential for ongoing development in ...

  9. Conclusion

    Conclusion This concludes our brief look at building a simple, but fully functional, Zend Framework ...

  10. Getting started: A skeleton application

    Getting started: A skeleton application In order to build our application, we will start with theZen ...