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函数的延迟加载实现代码
Oct 11 Javascript
window.location.reload()方法刷新页面弹出要再次显示该网页对话框
Apr 24 Javascript
jquery插件validate验证的小例子
May 08 Javascript
js在输入框屏蔽按键,只能键入数字的示例代码
Jan 03 Javascript
javascript实现点击后变换按钮显示文字的方法
May 13 Javascript
JS实现兼容性较好的随屏滚动效果
Nov 09 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
Nov 24 Javascript
详解JavaScript树结构
Jan 09 Javascript
Bootstrap 3 进度条的实现
Feb 22 Javascript
Angular实现一个简单的多选复选框的弹出框指令实例
Apr 25 Javascript
JS左右无缝轮播功能完整实例
May 16 Javascript
vue中使用v-model完成组件间的通信
Aug 22 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
PHP中array_map与array_column之间的关系分析
2014/08/19 PHP
PHP导出带样式的Excel示例代码
2016/08/28 PHP
CakePHP框架Model函数定义方法示例
2017/08/04 PHP
js 与或运算符 || && 妙用
2009/12/09 Javascript
jQuery Validation插件remote验证方式的Bug解决
2010/07/01 Javascript
js模拟select下拉菜单控件的代码
2013/05/08 Javascript
jQuery文字横向滚动效果的实现代码
2016/05/31 Javascript
JavaScript中无法通过div.style.left获取值的解决方法
2017/02/19 Javascript
React Native中NavigatorIOS组件的简单使用详解
2018/01/27 Javascript
微信小程序自定义组件实现tabs选项卡功能
2018/07/14 Javascript
vue路由分文件拆分管理详解
2020/08/13 Javascript
Vue 组件的挂载与父子组件的传值实例
2020/09/02 Javascript
JavaScript仿京东轮播图效果
2021/02/25 Javascript
python使用pil生成缩略图的方法
2015/03/26 Python
Python使用scrapy采集时伪装成HTTP/1.1的方法
2015/04/08 Python
python 计算两个日期相差多少个月实例代码
2017/05/24 Python
Python实现的多线程同步与互斥锁功能示例
2017/11/30 Python
Python使用pickle模块存储数据报错解决示例代码
2018/01/26 Python
tensorflow中next_batch的具体使用
2018/02/02 Python
CSS3与动画有关的属性transition、animation、transform对比(史上最全版)
2017/08/18 HTML / CSS
HTML5之SVG 2D入门1—SVG(可缩放矢量图形)概述
2013/01/30 HTML / CSS
Monnier Freres中文官网:法国领先的奢侈品配饰在线零售商
2017/11/01 全球购物
美国第二大连锁书店:Books-A-Million
2017/12/28 全球购物
苏格兰销售女装、男装和童装的连锁店:M&Co
2018/03/16 全球购物
NBA德国官方网上商店:NBA Store德国
2018/04/13 全球购物
优质美利奴羊毛袜,不只是徒步旅行:Darn Tough Vermont
2018/11/05 全球购物
extern是什么意思
2016/03/10 面试题
行政助理的职责
2013/11/14 职场文书
董事长岗位职责
2013/11/30 职场文书
小学数学课后反思
2014/04/23 职场文书
激励员工的口号
2014/06/16 职场文书
宿舍标语大全
2014/06/19 职场文书
工地门卫岗位职责范本
2014/07/01 职场文书
保研推荐信范文
2015/03/25 职场文书
Golang的继承模拟实例
2021/06/30 Golang
MySQL中优化SQL语句的方法(show status、explain分析服务器状态信息)
2022/04/09 MySQL