JavaScript:!!~和Boolean值转换

发布于 2021-08-13  1087 次阅读


今天看到同事的代码里面

https://blog.csdn.net/drawlessonsfrom/article/details/119565204?spm=1001.2014.3001.5501

出现了 "!!~" 符号,看不懂,和同事探讨了一下,收获挺多的:

  1. !是取反,同时这个取反可以将值转化为boolean
  2. ~符号是二进制取反符号
  3. !!~就是先取反在转换为Boolean类型
  4. !!~可以用在负数转Boolean做判断(参考下面代码)

测试代码如下:

~-1
0

~-1 == false
true

!!~-1
false

!~-1
true

~0
-1

!0
true

!1
false

~-1 === false
false

!!~-1 === false
true
//=========================
!!4
true

!!3
true

!!-1
true

if (!~names.indexOf(name))//如果存在则不添加
   names.push(name);

欢迎欢迎~热烈欢迎~