JS装逼操作锦集

2021-04-28  本文已影响0人  小橘籽

位运算符

这套运算符针对的是整数,所以对 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-- 后面的分号别漏了

参考文献

https://www.w3school.com.cn/js/js_bitwise.asp

https://developer.mozilla.org/zh-CN/docs/conflicting/Web/JavaScript/Reference/Operators_7c8eb9475d97a4a734c5991857698560

https://zhuanlan.zhihu.com/p/339012370

上一篇下一篇

猜你喜欢

热点阅读