JavaScript 中的特殊符号知多少? - 位运算符

265 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

大家都对运算符都很熟悉了吧, 先来个简单的你知道 ** 这个运算符吗?不要思考, 快速说出来吧 (可能因为用到的比较少, ** 这是幂运算).

那你知道 typeof也是一个运算符吗? typeof 是一个前缀运算符

还有 <<, >> 这个两个呢?

看源码提高自己编码水平. 经常会遇到一些高级操作(就是看不懂的代码), 其中就包括 位运算. 相信很多人对位运算符这个特别的运算符不太熟悉(<< >>> >>), 这并不是'书名号'! 本文详细学习下 位运算符 知识点.

位运算符的种类

我们都熟悉的 与运算(&) 和 或运算(|), 那 异或运算(^) 呢? 这里是不是想到了常见的 &&||, 注意别混淆了!

当然还有 JavaScript 中唯一的一个一元位运算符, ~一个波浪号, ta 表示 "非" 运算, 也会遇到

#位运算符说明
1~"非"运算
2&与运算
3|或运算
4^异或运算
5<<左移
6>>>右移
7>>带符号扩展右移

在 JavaScript 中作位运算的时候, 会首先将其转换为 32 位有符号整型(int)并计算, 然后在得到结果后再将其转换为 JavaScript 的数值类型.

在进行位运算的时候, 最高 22 位上的有效数字会直接丢失, 而且不给抛出警告信息(无语...)...

定义往往晦涩难懂, 来看代码(代码也看不懂了..)

let r1 = 1 & 1
let r2 = 1 & 2
let r3 = 1 | 1
let r4 = 1 | 2

document.write(r1, r2, r3, r4) // 1013
console.log(r1, r2, r3, r4) // 1 0 1 3