在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. cc2530 timer 3 PWM <可调占空比>

    前提: 开始用的是 cc2530 timer 1来做PWM的,已经可调占空比了,但是由于硬件的改动,需要用timer 3 和 timer 4 代替.由于调试过程中出了些小问题,于是自己把这个贴出来.关 ...

  2. iOS- iPad UIPopoverController

    在IPAD开发中,有一个很有趣的视图控制器,UIPopoverControllr,它的初始化必须要设置一个"内容视图",相当于它本身只是作为一个“容器”,而显示的内容还需要另外一个 ...

  3. [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 ...

  4. android136 360 拖拽

    差补器原理: 图标拖拽:     activity_drag_view.xml <?xml version="1.0" encoding="utf-8"? ...

  5. 管道技巧-while read line

    http://blog.csdn.net/hunanchenxingyu/article/details/9998089

  6. c++ primer,友元函数上的一个例子(By Sybase)

    本文试图解释c++ primer Screen 和 Window_Mgr的例子,为什么将两个类放在两个文件中无法编译? 将两个类写在同一个文件中,通过三个例子解释问题: 第一种写法问题: 编译到Scr ...

  7. Simulate android behaviors on win32

    To make debugging android games on win32 more convenience, we added some simulate actions to win32 p ...

  8. PHP算法--将数字金额转换成大写金额

    最近在看一些PHP算法题,遇到一个将数字金额转换成大写金额的小算法题,这里贴出自己的一个例子. 注:这个小算法适用于10万以内的金额. <?php //$num = 12345.67; func ...

  9. mstsc 终端服务器超出了最大允许连接的解决办法

    终端服务器超出了最大允许连接的解决办法   win7系统:运行,输入mstsc /v xxx.xxx.xxx.xxx /admin win2003系统:运行,输入mstsc /v xxx.xxx.xx ...

  10. app测试点

    手机上的app分为基于HTML5的app(类似于pc上的b/S应用)和本地app(类似于C/S结构). 所以测试上我们也可以充分吸收web的b/s和c/s测试经验.但是不同于pc上的应用测试,手机上的 ...