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中变量提升 Hoisting
Jul 03 Javascript
深入解读JavaScript中的Iterator和for-of循环
Jul 28 Javascript
JavaScript编程中的Promise使用大全
Jul 28 Javascript
jQuery实现进度条效果代码
Dec 17 Javascript
jQuery DataTables插件自定义Ajax分页实例解析
Apr 28 Javascript
AngularJS 获取ng-repeat动态生成的ng-model值实例详解
Nov 29 Javascript
easyUI实现类似搜索框关键词自动提示功能示例代码
Dec 27 Javascript
angularjs过滤器--filter与ng-repeat配合有奇效
Apr 20 Javascript
深入理解Angularjs中$http.post与$.post
May 19 Javascript
深入理解React Native原生模块与JS模块通信的几种方式
Jul 24 Javascript
你有必要知道的10个JavaScript难点
Jul 25 Javascript
vue实现登录功能
Dec 31 Vue.js
利用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
PHP 实用代码收集
2010/01/22 PHP
PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题
2016/08/12 PHP
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
2019/04/03 PHP
this[] 指的是什么内容 讨论
2007/03/24 Javascript
JavaScript实现鼠标滑过图片变换效果的方法
2015/04/16 Javascript
jQuery 常用代码集锦(必看篇)
2016/05/16 Javascript
单击按钮发送验证码,出现倒计时的简单实例
2017/03/17 Javascript
基于Vue的文字跑马灯组件(npm 组件包)
2017/05/24 Javascript
Angular实现表单验证功能
2017/11/13 Javascript
js中call()和apply()改变指针问题的讲解
2019/01/17 Javascript
D3.js(v3)+react 实现带坐标与比例尺的柱形图 (V3版本)
2019/05/09 Javascript
使用Node.js写一个代码生成器的方法步骤
2019/05/10 Javascript
Vue开发中遇到的跨域问题及解决方法
2020/02/11 Javascript
[01:22:29]真视界:2019年国际邀请赛总决赛
2020/01/29 DOTA
python数据分析数据标准化及离散化详解
2018/02/26 Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
2018/05/05 Python
Python定时任务随机时间执行的实现方法
2019/08/14 Python
Pytorch反向求导更新网络参数的方法
2019/08/17 Python
python聚类算法解决方案(rest接口/mpp数据库/json数据/下载图片及数据)
2019/08/28 Python
Python发送邮件封装实现过程详解
2020/05/09 Python
python使用re模块爬取豆瓣Top250电影
2020/10/20 Python
Python tkinter之ComboBox(下拉框)的使用简介
2021/02/05 Python
巧用CSS3 border实现图片遮罩效果代码
2012/04/09 HTML / CSS
CSS3绘制圆角矩形的简单示例
2015/09/28 HTML / CSS
美国室内盆栽植物购买网站:Plants.com
2020/04/24 全球购物
EntityManager都有哪些方法
2013/11/01 面试题
经贸日语专业个人求职信范文
2014/04/29 职场文书
党员批评与自我批评思想汇报(集锦)
2014/09/14 职场文书
全国法制宣传日活动总结2014
2014/11/01 职场文书
企业与个人合作经营协议书
2014/11/01 职场文书
巾帼文明岗汇报材料
2014/12/24 职场文书
评先进个人材料
2014/12/29 职场文书
会议邀请函
2015/01/30 职场文书
刘公岛导游词
2015/02/05 职场文书
2015年社区综治工作总结
2015/04/21 职场文书
同步小康驻村工作简报
2015/07/20 职场文书