#说明
之前在别人代码中看到有人使用
!!的写法进行判断,当时觉得挺不解的,感觉明明!以及原来变量不就已经可以进行boolean判断了吗但后来才发现不是这样的
本人全部笔记地址
JavaScript中为什么需要 !! ?
1、了解布尔值为 false的值
首先你要知道在JavaScript中,布尔值为
false的值有如下几个:
undefinednullfalse0NaN""或''(空字符串)这样才能知道更好的理解这个用法
2、!!的作用
!!的作用是将值的类型强制转化为布尔类型。
可以发现
undefined==false、null==false和NaN==false的值均为false,如果加上!!,就都相等了
3、使用场景举例
Ⅰ-if语句中使用
首先,我们要知道
if语句的条件表达式会执行隐式类型转换。```javascript var let = 0; if(b) console.log(‘true’); else console.log(‘false’); // 执行这行代码
if(b&&true) console.log(‘true’); else console.log(‘false’); // 执行这行代码
if(!!b&&true) console.log(‘true’); else console.log(‘false’); // 执行这行代码
> 所以发现并无任何影响,也证明了if其实已经默认转换了,我们是否增加`!!`并没有任何影响> 这也是当初我当初觉得没用的原因了<a name="243659e2"></a>### Ⅱ-返回值强制转换> ```typescriptconst test=value=> value && true;console.log(test(0)); // 0const test=value=> !!value && true;console.log(test(0)); // false
可以看到,
!!把value强制转化为布尔值。

