#说明

之前在别人代码中看到有人使用!!的写法进行判断,当时觉得挺不解的,感觉明明!以及原来变量不就已经可以进行boolean判断了吗

但后来才发现不是这样的

本人全部笔记地址

JavaScript中为什么需要 !!

1、了解布尔值为 false的值

首先你要知道在JavaScript中,布尔值为 false的值有如下几个:

  • undefined
  • null
  • false
  • 0
  • NaN
  • ""''(空字符串)

这样才能知道更好的理解这个用法

2、!!的作用

!!的作用是将值的类型强制转化为布尔类型。

JS中为什么需要 !! ? - 图1

可以发现 undefined==falsenull==falseNaN==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’); // 执行这行代码

  1. > 所以发现并无任何影响,也证明了if其实已经默认转换了,我们是否增加`!!`并没有任何影响
  2. > 这也是当初我当初觉得没用的原因了
  3. <a name="243659e2"></a>
  4. ### Ⅱ-返回值强制转换
  5. > ```typescript
  6. const test=value=> value && true;
  7. console.log(test(0)); // 0
  8. const test=value=> !!value && true;
  9. console.log(test(0)); // false

可以看到,!!value强制转化为布尔值。