位运算符
这套运算符针对的是整数,所以对 JavaScript 完全无用,因为 JavaScript 内部,所有数字都保存为双精度浮点数。如果使用它们的话,JavaScript 不得不将运算数先转为整数,然后再进行运算,这样就降低了速度。而且"按位与运算符"&同"逻辑与运算符"&&,很容易混淆。
& AND( 如果两位都是 1 则设置每位为 1)
说明
0101
& 0001
= 0001
应用
/* 奇偶判断 */
n&1===1 // true 奇数,false偶数
| OR (如果两位之一为 1 则设置每位为 1)
说明
0101
| 0001
= 0101
应用
^ XOR (如果两位只有一位为 1 则设置每位为 1)
说明
0101
^ 0001
= 0100
应用
/* 切换 0和1 */
let toggle = 1
toggle ^= 1 // 0
toggle ^= 1 // 1
/* 两值交换 */
let a=1,b=2
a^=b
b^=a
a^=b
// a===2 b===1
~ NOT (反转所有位)
说明
~ 0101
= 1010
应用
/* 判断项是否存在 */
/* 保留整数位( 对于浮点数,~~value可以代替parseInt(value),而且前者效率更高些) */
~~ 1.2 // => 1
~~ -1.2 // => -1
<< 零填充左位移:通过从右推入零向左位移,并使最左边的位脱落。
说明
应用
/* 加倍 */
let num = 2
num=num<<1 // => 4
/* 迅速得出2的次方 */
1<<2 // 2^2 => 4
1<<10 // 2^10 => 1024
>> 零填充右位移:通过从左推入最左位的拷贝来向右位移,并使最右边的位脱落。
说明
应用
>>> 零填充右位移:通过从左推入零来向右位移,并使最右边的位脱落
说明
应用
arr.splice(arr.indexOf(4)>>>0) // 元素不存在时返回[]
// -1>>>0 => 4294967295
其他
使用 !! 将数字转为布尔值
所有非0的值都是true,包括负数、浮点数:
console.log(!!7); // true
console.log(!!0); // false
console.log(!!-1); // true
console.log(!!0.71); // true
使用toString(16)取随机字符串
Math.random().toString(16).substring(2, 15); // .substring() 的第二个参数控制取多少位 (最多可取13位)
for 循环条件的简写
for(let i = 0; i < arr.length; i++) {...}
for(let i = arr.length; i--;) {...} // 注意 i-- 后面的分号别漏了
网友评论