在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. VM使用标准交换机

    1.新建模板: 网卡选择“未连接”,此处看不到“标准交换机”选项

  2. 【25】考虑写出一个不抛异常的swap函数

    1.swap交换对象值,std提供了实现方法模版的实现,它的实现是交换对象值. namespace std { template<typename T> void swap(T& ...

  3. 从Eclipse到Android Studio经历

    现在不得不要和相处近两年的Eclipse分手了,很舍不得,谢谢你这些日子有你的陪伴,每天都会有些的期待和挑战.两年来,我们建立了很深厚的情感.曾经以为我的世界只能有你,而现在我的心里可能有了别人.起初 ...

  4. UVA - 10883 Supermean

    Description Problem F Supermean Time Limit: 2 second "I have not failed. I've just found 10,000 ...

  5. oracle之单行函数

     单行函数 ①.字符函数 LOWER(x):将x中的每一个单词都转换成小写 UPPER(x):将x中的每一个单词都转换成大写 INITCAP(x): 将x中的每一个单词的首字母转换成大写 CONC ...

  6. android124 zhihuibeijing 新闻中心-新闻 -北京页签 下拉刷新

    缓存工具类:以url为key,json数据为value, package com.itheima.zhbj52.utils; import com.itheima.zhbj52.global.Glob ...

  7. C# Firefox Session Manager 文件的导出与管理

    长时间使用Firefox会产生很多的session文件(使用了插件:Session Manager).这些文件保存了你浏览过的所有的网址.虽然我们可以使用firefox的书签功能.但有时候打开的网址过 ...

  8. oracle数据库中,分天查询数目

    select to_CHAR(SP_MT_TIME,'DD'),count(*) from table2 group by to_CHAR(SP_MT_TIME,'DD');

  9. Java基础知识强化之网络编程笔记14:TCP之多个客户端上传到一个服务器的思考(多线程改进)

    1. 多个客户端上传到一个服务器的思考 通过while循环可以改进一个服务器接收多个客户端. 但是这个是有问题的.如果是这种情况,假设我还有张三,李四,王五这三个人分别执行客户端  张三:好好学习.a ...

  10. hadoop学习记录(零)

    这个博客开通快一年了,但是由于种种原因,始终没有能够养成定期更新的习惯. 最近完成了比赛的项目,向除了android开发以外再拓宽一下自己的技能树. 最近购买了<java8函数式编程>和& ...