写在前面
今天,我们来学习一下 JS 操作符中的位操作符
在 JS 这门语言的标准里,描述了一组可以用来操作数据值的操作符,其中包括 数学操作符、位操作符、关系操作符、相等操作符、布尔操作符、条件操作符以及ES7的指数操作符 等等,为什么叫操作符,因为它们都是符号构成。。。
在这一组操作符中,相比加减乘除、逻辑判断、相等、布尔等这些我们经常会用到的操作符,位运算操作符好像是极其特殊的一类,由于位操作符不是那么的直观导致很多刚入门甚至是老程序员都不太喜欢用它
大多数人都认为在写程序的过程中使用过多花里胡哨的位操作符对阅读体验是极其不好的,尽管它可能会为性能带来一些提升,但是相比下来一个项目要选择阅读体验和些许性能的话,大家大概率的会选择前者
话是这样说,但是这并不是大家不学习它的理由,假如大家都懂得位运算,那么这些 骚操作
就变成了常规操作,有的人可能会说就算懂得位运算,想要阅读一段位操作符组成的的代码还是需要时间来思考的,并不如通俗点写来的直观,嗯,也对,但是加上当量注释的话也还行
总之,你可以不用,但一定要会,存在即合理,任何说法都不是不学习它的理由
代码语言:javascript复制(!(~ []) {})[--[~ ""][ []]*[~ []] ~~! []] ({} [])[[~! []]*~ []]
嗯,就以这一段网红代码为开头吧
看此文之前,请一定要先阅读这篇文章
- 「硬核JS」数字之美
- 「硬核JS」数字之美
- 「硬核JS」数字之美
重要的事情说三遍,上面这篇文章就是给此文做准备的,文中讲了一些数字相关的东西,二进制转换、原码、反码、补码以及 JS 中的数字存储等等,看完上文再看此文会很 easy
也是给大家回顾下一些计算机基础常识,估计大家久征沙场这些基础都忘完了,不然直接啃会有点迷