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

bool值转换

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

"&&" : 遇到“假”爱就返回

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

返回遇到的第一个假值(null, undefined, NaN, false, '', 0)或者最后一个值。
若是&&左侧表达式的值为真值,则返回右侧表达式的值;不然返回左侧表达式的值。多个&&表达式一块儿运算时,返回第一个表达式运算为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中"||"运算符的运算法则以下:java

返回遇到的第一个真值或者最后一个值。
若是"||"左侧表达式的值为真值,则返回左侧表达式的值;不然返回右侧表达式的值。多个"||"表达式一块儿运算时,返回第一个表达式运算结果为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;

个人博客即将搬运同步至腾讯云+社区,邀请你们一同入驻:https://cloud.tencent.com/dev...算法

相关文章
相关标签/搜索