数据类型 | 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...算法