- 判断一个数的奇偶(|)
var n = 2
n | 1 // 0
var n = 1
n | 1 // 1
- 向下取整(~~,>>,<<,>>>,|)
~~1.2 // 1
~~1.8 // 1
1.8 >> 0 // 1
1.14 << 0 // 1
1.14 | 0 // 1
1.14 >>> 0 // 1 (>>>不可对负数取整)
- 2的倍数乘除法(<<,>>)
1 << 2 // 4 // 1的2进制左移2位,即乘2的2次方
8 >> 2 // 2 // 8的2进制右移2位,即除2的2次方
- 比较两个数是否相等(^)
1 ^ 1 // 0
!(2 ^ 2) // true
var n = 8
!(n ^ 8) // true
- 取相反数
var n = 1
n = ~n + 1
- 复杂开关操作
// 适用于表单验证等
var result = 0
var rule = {
name: 1,
name2: 1 << 1,
name3: 1 << 2,
name4: 1 << 3
}
result |= name3 // 设置name3为成功
result &= ~name3 // 设置name3为失败
result ^= name3 // 取反,即是成功时改为失败,反之亦然
result & rule.name3 // 判断name3是否成功
result & (rule.name3 | rule.name4) // 判断name3和name4是否同时成功
- 0和1的切换
var n = 1
n ^= 1 // 0
n ^= 1 // 1