三大布尔操作符:
非(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程序的赋值语句经常会使用这种模式。
相关推荐
ECMAScript 6 入门(第三版)
该操作符首先会将它的操作数转换为一个布尔值,然后再对其求反。 下面说明下Boolean()转型函数的一组规则。 数据类型 转换为true的值 转换为false的值 Boolean true false String 任何非空字符串 “”(空...
JavaScript常用运算符和操作符总结(教辅)JavaScript常用运算符和操作符总结(教辅)JavaScript常用运算符和操作符总结(教辅)JavaScript常用运算符和操作符总结(教辅)JavaScript常用运算符和操作符总结(教辅)...
ECMAScript 6 阮老师第三版,包含pdf,mobi,epub等格式,可以在iBooks, kindle, 支持PDF阅读的pc、平板和手机上直接阅读。
ECMAscript基础
ECMAScript2021中文最新,ECMAScript2021中文文档,第1-6章,持续更新,喜欢请star。git地址https://github.com/fangniyima/ECMAScript-notes
《ECMAScript2016标准入门(第三版)》_阮一峰最新版
js 学习必备。 ECMAScript5.1中文版
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
ECMAScript Javascript Promise 详解
此标准定义了 ECMAScript 脚本语言。本节包含对 ECMAScript 语言非规范性的概述。
这个 Ecma 标准定义了 ECMAScript 2020 语言。它是 ECMAScript 语言的第十一版 规范。自 1997 年第一版出版以来,ECMAScript 已经发展成为世界上使用最广泛的通用编程语言之一。它最广为人知的是嵌入在Web浏览器中的...
ECMAScript 中的相等操作符由两个等于号 ( == ) 表示,如果两个操作数相等,则返回 true。 相等操作符会先转换操作数(通常称为强制转型),然后比较它们的相等性。 在转换不同的数据类型时,相等操作符遵循下列基本...
ecmascript手册,可以通过手册料及基于此规范的语言
ES6是下一代JavaScript语言标准的统称,每年6月发布一次修订版,迄今为止已经发布了3个版本,分别是ES2015、ES2016、ES2017。《ES6标准入门(第3版)》根据ES2017标准,详尽介绍了所有新增的语法,对基本概念、设计...
个人收集电子书,仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!