`
MirrorAvatar
  • 浏览: 46447 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ECMAScript的三大布尔操作符

阅读更多

三大布尔操作符:

非(NOT)、与(AND)和或(OR)。运算规则和数学中的非与或一样。

1.逻辑非(!)

操作原理:首先会将它的操作数转换为一个布尔值,然后再对其求反。

转换规则参考:Boolean类型

两次逻辑非(!!),相当于一次Boolean()转换函数。

2.逻辑与(&&)

很重要的一点:

在有一个操作数不是布尔值的情况下,逻辑与操作就不一定返回布尔值;此时,它遵循下列规则:

条件 返回结果
第一个操作数是对象 第二个操作数
第二个操作数是对象 则只有在第一个操作数的求值结果为true的情况下才会返回该对象
两个数都是对象 第二个对象
有一个操作数是null null
有一个操作数是NaN NaN
有一个操作数是undefined undefined

浏览器控制台测试结果:

 

window && 11;  //11
11 && window;  //window对象
Navigator && window;  //window
window && Navigator;  //Navigator
null && window;  //null
NaN && window;  //NaN
undefined && window;  //undefined

 

 

逻辑与操作属于短路操作,即如果第一个操作数能够决定结果,那么就不会再对第二个操作数求值。

3.逻辑或(||)

  • 逻辑或的规则

    与逻辑与操作相似,如果有一个操作数不是布尔值,逻辑或也不一定返回布尔值,返回规则如下:

    条件 返回值
    第一个操作数是对象 第一个操作数
    第一个操作数的求值结果为false 第二个操作数
    两个操作数都是对象 第一个操作数
    两个操作数都是null null
    两个操作数都是NaN NaN
    两个操作数都是undefined undefined
  • 与逻辑与的相似性

    逻辑或操作符也是短路操作符。也就是说,如果第一个操作数的求值结果为true,就不会对第二个操作数求值了。

  • 逻辑或的最佳实践

    利用逻辑或的这一行为(上面说的)来避免为变量赋null或undefined值。

    var myObject = preferredObject || backupObject;

    代码分析:

    变量myObject将被赋予等号后面两个值中的一个。变量preferredObject中包含优先赋给变量myObject的值,变量backupObject负责在preferredObject中不包含有效值的情况下提供后备值。

    如果preferredObject的值不是null,那么它的值将被赋给myObject;如果是null,则将backupObject的值赋给myObject。

    ECMAScript程序的赋值语句经常会使用这种模式。

0
0
分享到:
评论

相关推荐

    ECMAScript 6 入门(第三版)

    ECMAScript 6 入门(第三版)

    JavaScript 布尔操作符解析 || !

    该操作符首先会将它的操作数转换为一个布尔值,然后再对其求反。 下面说明下Boolean()转型函数的一组规则。 数据类型 转换为true的值 转换为false的值 Boolean true false String  任何非空字符串 “”(空...

    JavaScript常用运算符和操作符总结(教辅)

    JavaScript常用运算符和操作符总结(教辅)JavaScript常用运算符和操作符总结(教辅)JavaScript常用运算符和操作符总结(教辅)JavaScript常用运算符和操作符总结(教辅)JavaScript常用运算符和操作符总结(教辅)...

    ECMAScript 6 第三版

    ECMAScript 6 阮老师第三版,包含pdf,mobi,epub等格式,可以在iBooks, kindle, 支持PDF阅读的pc、平板和手机上直接阅读。

    ECMAscript

    ECMAscript基础

    ECMAScript中文最新(ECMA262)

    ECMAScript2021中文最新,ECMAScript2021中文文档,第1-6章,持续更新,喜欢请star。git地址https://github.com/fangniyima/ECMAScript-notes

    《ECMAScript2016标准入门(第三版)》_阮一峰最新版

    《ECMAScript2016标准入门(第三版)》_阮一峰最新版

    ECMAScript5.1中文版

    js 学习必备。 ECMAScript5.1中文版

    ECMAScript-6标准入门(第三版).zip

    1. ECMAScript 6简介 2. let 和 const 命令 3. 变量的解构赋值 4. 字符串的扩展 5. 正则的扩展 6. 数值的扩展 7. 函数的扩展 8. 数组的扩展 9. 对象的扩展 10. Symbol 11. Set 和 Map 数据结构 12. Proxy 13. ...

    Learning ECMAScript 6

    Learning ECMAScript 6 Learning ECMAScript 6 Learning ECMAScript 6 Learning ECMAScript 6

    ECMAScript Javascript Promise 详解

    ECMAScript Javascript Promise 详解

    ECMAScript5.1中文版说明

    此标准定义了 ECMAScript 脚本语言。本节包含对 ECMAScript 语言非规范性的概述。

    ECMAScript 2020 语言规范(ECMA-262)

    这个 Ecma 标准定义了 ECMAScript 2020 语言。它是 ECMAScript 语言的第十一版 规范。自 1997 年第一版出版以来,ECMAScript 已经发展成为世界上使用最广泛的通用编程语言之一。它最广为人知的是嵌入在Web浏览器中的...

    JavaScript中的相等操作符使用详解

    ECMAScript 中的相等操作符由两个等于号 ( == ) 表示,如果两个操作数相等,则返回 true。 相等操作符会先转换操作数(通常称为强制转型),然后比较它们的相等性。 在转换不同的数据类型时,相等操作符遵循下列基本...

    ecmascript手册

    ecmascript手册,可以通过手册料及基于此规范的语言

    ECMAScript6入门 阮一峰 第三版

    ES6是下一代JavaScript语言标准的统称,每年6月发布一次修订版,迄今为止已经发布了3个版本,分别是ES2015、ES2016、ES2017。《ES6标准入门(第3版)》根据ES2017标准,详尽介绍了所有新增的语法,对基本概念、设计...

    ECMAScript 6 入门(第三版 )

    个人收集电子书,仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!

Global site tag (gtag.js) - Google Analytics