js中bool值的转换及“&&”、“||”、 “!!”详解


Posted in Javascript onDecember 21, 2017

前言

首先需要知道的是,js中有6个值为false,分别是: 0, '', null, undefined, NaN 和 false, 其他(包括{}, [], Infinity)为true.

可以使用Boolean()函数或是两次取非就能获得对象的布尔值,例如Boolean(undefined)和!!undefined同样能取得布尔值false,

对于0, '', null, undefined, NaN,{}, [], Infinity求布尔值,分别是false false false false false true true true.

因此我们知道的一点是:对象的布尔值是true,即使是对象{}。

bool值转换

数据类型 bool值转化
undefined undefined 转化为 false
Object null 转化为false,其他为 true
Boolean false 转化为 false,true 转化为 true
Number 0,NaN 转化为false,其他为 true
String "" 转化为 false,其他为 true

"&&"

javascript中“&&”运算符运算法则如下:

如果&&左侧表达式的值为真值,则返回右侧表达式的值;否则返回左侧表达式的值。多个&&表达式一起运算时,返回第一个表达式运算为false的值,如果所有表达式运算结果都为true,则返回最右侧一个表达式运算的值。

const aa = {'name': 'xx'};
const bb = aa && aa.age; // bb输出为undefined;
let cc;
const dd = cc && cc.name ? cc.name : undefined; // dd输出为undefined
const dd = cc && cc.name; // dd输出为undefined;

上面两句代码的执行结果是一样的,之前写代码的时候一直用上面的方式,但是发现有些单测覆盖不到,导致单测分支覆盖率很低,换下面的方式就可以很好的解决这个问题,这两句的效果是一样的。

"||"

javascript中"||"运算符的运算法则如下:

如果"||"左侧表达式的值为真值,则返回左侧表达式的值;否则返回右侧表达式的值。多个"||"表达式一起运算时,返回第一个表达式运算结果为true的值,如果所有表达式运算结果都为false,否则返回最右侧的表达式的值。

const aa = false || 'xx'; // aa输出为'xx'

"!!"

"!!"将表达式进行强制转化为bool值的运算,运算结果为true或者false。

const aa = 'xx';
const bb = !!aa; // bb输出为true
const cc = !!(NaN || undefined || null || 0 || '' ); // cc为false;

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
js location.replace与location.reload的区别
Sep 08 Javascript
Bootstrap的图片轮播示例代码
Aug 31 Javascript
详解JavaScript逻辑And运算符
Dec 04 Javascript
HTML5游戏引擎LTweenLite实现的超帅动画效果(附demo源码下载)
Jan 26 Javascript
jQuery EasyUI API 中文帮助文档和扩展实例
Aug 01 Javascript
详解js运算符单竖杠“|”与“||”的用法和作用介绍
Nov 04 Javascript
EditPlus 正则表达式 实战(3)
Dec 15 Javascript
Angular.js基础学习之初始化
Mar 10 Javascript
简单的JS控制button颜色随点击更改的实现方法
Apr 17 Javascript
对于input 框限定输入值为浮点型的js代码
Sep 25 Javascript
js中getBoundingClientRect的作用及兼容方案详解
Feb 01 Javascript
微信小程序实现倒计时功能
Nov 19 Javascript
利用node实现一个批量重命名文件的函数
Dec 21 #Javascript
详解webpack3编译兼容IE8的正确姿势
Dec 21 #Javascript
利用vue开发一个所谓的数独方法实例
Dec 21 #Javascript
开发Vue树形组件的示例代码
Dec 21 #Javascript
详解使用vuex进行菜单管理
Dec 21 #Javascript
Angular5.1新功能分享
Dec 21 #Javascript
vue2中的keep-alive使用总结及注意事项
Dec 21 #Javascript
You might like
dedecms中显示数字验证码的修改方法
2007/03/21 PHP
探讨如何在php168_cms中提取验证码
2013/06/08 PHP
php更新修改excel中的内容实例代码
2014/02/26 PHP
个人写的PHP验证码生成类分享
2014/08/21 PHP
PHP的imageTtfText()函数深入详解
2021/03/03 PHP
JS控件autocomplete 0.11演示及下载 1月5日已更新
2007/01/09 Javascript
extjs实现选择多表自定义查询功能 前台部分(ext源码)
2011/12/20 Javascript
JavaScript使用HTML5的window.postMessage实现跨域通信例子
2014/04/11 Javascript
Bootstrap每天必学之表格
2015/11/23 Javascript
用JS写的一个Ajax库(实例代码)
2016/08/06 Javascript
js实现返回顶部效果
2017/03/10 Javascript
Angular中响应式表单的三种更新值方法详析
2017/08/22 Javascript
javascript如何用递归写一个简单的树形结构示例
2017/09/06 Javascript
React 高阶组件入门介绍
2018/01/11 Javascript
Vue-Quill-Editor富文本编辑器的使用教程
2018/09/21 Javascript
小程序调用微信支付的方法
2019/09/26 Javascript
[01:07:19]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第一场 1月19日
2021/03/11 DOTA
Python抓取百度查询结果的方法
2015/07/08 Python
深入解析Python设计模式编程中建造者模式的使用
2016/03/02 Python
详解如何在Apache中运行Python WSGI应用
2019/01/02 Python
python 遗传算法求函数极值的实现代码
2020/02/11 Python
python logging 重复写日志问题解决办法详解
2020/08/04 Python
python温度转换华氏温度实现代码
2020/12/06 Python
详解移动端Html5页面中1px边框的几种解决方法
2018/07/24 HTML / CSS
美国学校用品、教室和教学商店:Discount School Supply
2018/04/04 全球购物
英国网上购买肉类网站:Great British Meat
2018/10/17 全球购物
会计专业毕业生自我鉴定
2013/10/29 职场文书
食品营养与检测应届生求职信
2013/11/08 职场文书
诚信考试承诺书
2014/03/27 职场文书
中学生评语大全
2014/04/18 职场文书
慰问敬老院活动总结
2014/04/26 职场文书
八年级英语教学计划
2015/01/23 职场文书
社区五一劳动节活动总结
2015/02/09 职场文书
原告离婚代理词
2015/05/23 职场文书
分析MySQL抛出异常的几种常见解决方式
2021/05/18 MySQL
Python绘制散乱的点构成的图的方法
2022/04/21 Python