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 相关文章推荐
javascript 进阶篇2 CSS XML学习
Mar 14 Javascript
JavaScript监听和禁用浏览器回车事件实例
Jan 31 Javascript
纯JS前端实现分页代码
Jun 21 Javascript
jQuery实现页面滚动时智能浮动定位
Jan 08 Javascript
Vue异步组件使用详解
Apr 08 Javascript
vue 录制视频并压缩视频文件的方法
Jul 27 Javascript
Angular动态绑定样式及改变UI框架样式的方法小结
Sep 03 Javascript
JQuery属性操作与循环用法示例
May 15 jQuery
javascript异步处理与Jquery deferred对象用法总结
Jun 04 jQuery
javascript自定义日期比较函数用法示例
Jul 22 Javascript
layui实现三级导航菜单
Jul 26 Javascript
详解Vue-cli3.X使用px2rem遇到的问题
Aug 09 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
global.php
2006/12/09 PHP
使用apache模块rewrite_module (转)
2007/02/14 PHP
php csv操作类代码
2009/12/14 PHP
检测codeigniter脚本消耗内存情况的方法
2015/03/21 PHP
Zend Framework路由器用法实例详解
2016/12/11 PHP
PHP常用函数之获取汉字首字母功能示例
2019/10/21 PHP
初学JavaScript第二章
2008/09/30 Javascript
得到jQuery detach()后节点中的某个值实现代码
2013/02/05 Javascript
javascript中RegExp保留小数点后几位数的方法分享
2013/08/13 Javascript
JavaScript中的6种运算符总结
2014/10/16 Javascript
jquery实现鼠标拖拽滑动效果来选择数字的方法
2015/05/04 Javascript
基于JavaScript制作霓虹灯文字 代码 特效
2015/09/01 Javascript
微信小程序开发实战教程之手势解锁
2016/11/18 Javascript
原生js实现网页顶部自动下拉/收缩广告效果
2017/01/20 Javascript
实例解析Vue.js下载方式及基本概念
2018/05/11 Javascript
你可能从未使用过的11+个JavaScript特性(小结)
2020/01/08 Javascript
python通过urllib2爬网页上种子下载示例
2014/02/24 Python
Python中zfill()方法的使用教程
2015/05/20 Python
详解python eval函数的妙用
2017/11/16 Python
Django 配置多站点多域名的实现步骤
2019/05/17 Python
python2爬取百度贴吧指定关键字和图片代码实例
2019/08/14 Python
基于Python实现拆分和合并GIF动态图
2019/10/22 Python
python 对一幅灰度图像进行直方图均衡化
2020/10/27 Python
CSS3 实现侧边栏展开收起动画
2014/12/22 HTML / CSS
全球速卖通西班牙站:AliExpress西班牙
2017/10/30 全球购物
乔丹诺(Giordano)酒庄德国官网:找到最好的意大利葡萄酒
2017/12/28 全球购物
微软加拿大官方网站:Microsoft Canada
2019/04/28 全球购物
Clarks西班牙官方在线商店:clarks鞋
2019/05/03 全球购物
Myholidays美国:在线旅游网站
2019/08/16 全球购物
视光学毕业生自荐书范文
2014/02/13 职场文书
《雷鸣电闪波尔卡》教学反思
2014/02/23 职场文书
党支部公开承诺书
2014/03/28 职场文书
运动会开幕词
2015/01/28 职场文书
《陶罐和铁罐》教学反思
2016/03/03 职场文书
2019大学生实习报告
2019/06/21 职场文书
JavaScript继承的三种方法实例
2021/05/12 Javascript