在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. 开源企业IM,免费企业即时通讯软件-ENTBOOST云通讯平台Windows(r174)版本号公布

    经过恩布团队全体成员的不懈努力,依照原定计划,最终在今天(5月14日)公布第二个开源版本号,恩布企业互联IM,ENTBOOST 0.2.0(r174beta)Windows版本号:主要功能支持文本.表 ...

  2. json处理复杂对象jsonConfig

     我们通常的Json字符串和java当对象互转.经常有选择性地过滤掉一些属性值,和json-lib包JsonConfig为我们提供了这样一个 特征,有几种方法实施细则. (1)建立JsonConf ...

  3. 在iOS中怎样创建可展开的Table View?(下)

    接上篇:在iOS中怎样创建可展开的Table View?(上) 展开和合拢 我猜这部分可能是你最期望的了,因为本次教程的目标将会在在部分实现.第一次我们设法让顶层的cell,在它们点击的时候展开或者合 ...

  4. Windows二进制文件的Python扩展包

    http://www.lfd.uci.edu/~gohlke/pythonlibs/ https://pypi.python.org/simple/

  5. page cache和buffer cache 图解

    http://www.cnblogs.com/yrpen/p/3777963.html http://www.cnblogs.com/hustcat/archive/2011/10/27/222699 ...

  6. C#_数据库基本交互

    //app.config <?xml version="1.0" encoding="utf-8" ?> <configuration> ...

  7. iOS简单加载一个网页

    .h文件中 @property(strong ,nonitomic) UIWebView * webView; .m文件中 -(void)viewDidLoad { self.webview = [[ ...

  8. java code to byte code--partone--reference

    Understanding how Java code is compiled into byte code and executed on a Java Virtual Machine (JVM) ...

  9. windows 7文件共享方法

    现在家里有几台电脑是很常见的,把家里的几台电脑组成局域网,共享文件.联机游戏是非常有必要的,但是组建局域网又是很多朋友永远的痛,需要设置工作组.设置登录方式.打开服务等等,时常还会出点小问题而无法共享 ...

  10. 常用免费快递查询API对接案例

    现在许多电商公司和ERP都会寻找比较适用的集成快递查询接口,减少对接难度,现在整理一下常用的免费快递查询接口,并附上调用案例,如果有觉得不对的地方,望能够一起沟通探讨! 一.快递查询接口 目前有提供免 ...