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 相关文章推荐
基于jquery的bankInput银行卡账号格式化
Aug 22 Javascript
捕获键盘事件(且兼容各浏览器)
Jul 03 Javascript
js关于精确计算和数值格式化以及直接引js文件
Jan 28 Javascript
javascript实现自动输出文本(打字特效)
Aug 27 Javascript
Jquery为DIV添加click事件的简单实例
Jun 02 Javascript
第一次接触神奇的Bootstrap基础排版
Jul 26 Javascript
bootstrap读书笔记之CSS组件(上)
Oct 17 Javascript
利用VS Code开发你的第一个AngularJS 2应用程序
Dec 15 Javascript
利用Decorator如何控制Koa路由详解
Jun 26 Javascript
微信小程序设置全局请求URL及封装wx.request请求操作示例
Apr 02 Javascript
node.js处理前端提交的GET请求
Aug 30 Javascript
vue 解决uglifyjs-webpack-plugin打包出现报错的问题
Aug 04 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
PHP5中MVC结构学习
2006/10/09 PHP
PHP缓存技术的使用说明
2011/08/06 PHP
php注销代码(session注销)
2012/05/31 PHP
php中的curl_multi系列函数使用例子
2014/07/29 PHP
smarty内置函数section的用法
2015/01/22 PHP
PHP以json或xml格式返回请求数据的方法
2018/05/31 PHP
Yii2框架中一些折磨人的坑
2019/12/15 PHP
JavaScript Cookie显示用户上次访问的时间和次数
2009/12/08 Javascript
javascript 基础篇1 什么是js 建立第一个js程序
2012/03/14 Javascript
使用 stylelint检查CSS_StyleLint
2016/04/28 Javascript
jQuery插件AjaxFileUpload实现ajax文件上传
2016/05/05 Javascript
深入理解js中this的用法
2016/05/28 Javascript
推荐15个最好用的JavaScript代码压缩工具
2019/02/13 Javascript
微信小程序如何获取群聊的openGid以及名称详解
2019/07/17 Javascript
layui实现数据分页功能(ajax异步)
2019/07/27 Javascript
js实现图片3D轮播效果
2019/09/21 Javascript
基于JQuery实现页面定时弹出广告
2020/05/08 jQuery
vue 插槽简介及使用示例
2020/11/19 Vue.js
python中精确输出JSON浮点数的方法
2014/04/18 Python
python操作CouchDB的方法
2014/10/08 Python
用Django实现一个可运行的区块链应用
2018/03/08 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
2018/04/21 Python
python 在指定范围内随机生成不重复的n个数实例
2019/01/28 Python
Python模块汇总(常用第三方库)
2019/10/07 Python
解决Python在导入文件时的FileNotFoundError问题
2020/04/10 Python
Python更改pip镜像源的方法示例
2020/12/01 Python
CSS3实现的闪烁跳跃进度条示例(附源码)
2013/08/19 HTML / CSS
使用CSS3实现input多选框自定义样式的方法示例
2019/07/19 HTML / CSS
HTML5 客户端数据库简易使用:IndexedDB
2019/12/19 HTML / CSS
啦啦队口号大全
2014/06/16 职场文书
煤矿安全协议书
2014/08/20 职场文书
2015年学雷锋活动总结
2015/02/06 职场文书
化工生产实习心得体会
2016/01/22 职场文书
2016大学先进团支部事迹材料
2016/03/01 职场文书
《家》读后感:万惜拯救,冷暖自知
2019/09/25 职场文书
python读取pdf格式文档的实现代码
2021/04/01 Python