记录网上找了几个Js位运算符使用场景

65 阅读1分钟

1. ~ 按位非

按位非会将数值的32位二进制的每一位取反。本质上取操作数的负值,然后减1

~20 === -21

使用场景

  1. 向下取整
~1.11 取负值然后减1为-2
~~1.11 取负值然后减1为1
  1. Array.indexOf()中的使用
Array.indexOf()查询不到会返回-1, 通过~-1取值为0Boolean(0)的话则返回falsevar arr = [1,2,3]
if (~Array.indexOf(4)) {
    //...
} else {
    //...
}

2. & 按位与

按位与&, 本质上将两个操作数的32位二进制数的每一位对齐。然后按如下的规则取值,1 & 1 等于 1; 1 & 0 等于 0;0 & 1 等于0;0 & 0等于0。

3. | 按位或

按位与|, 本质上将两个操作数的32位二进制数的每一位对齐。然后按如下的规则取值,1 | 1 等于 1; 1 | 0 等于 1;0 | 1 等于1;0 | 0等于0。

使用场景

向下取整

-1|0 = -1
0|3 = 0