JavaScript:!!~和Boolean值转换

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


今天看到同事的代码里面出现了 "!!~" 符号,看不懂,和同事探讨了一下:

  • !是取反,同时这个取反可以将值转化为boolean

  • ~符号是二进制取反符号

  • !!~就是先取反在转换为Boolean类型

  • !!~可以用在负数转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);

一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。