当前位置

网站首页> 程序设计 > 开源项目 > 程序开发 > 浏览文章

javascript中的~~ - 无敌浩克

作者:小梦 来源: 网络 时间: 2024-06-28 阅读:

今天在一代码中到这样一句:

~~(Math.random() * 2e3)

其中的代码上用到了位运算符~(按位非),在平时的编程中很少用到位运算符,只是学习编程基础的时候看到过,也没多做了解,既然现在遇到了,就打算对这一运算符一探究竟。
其实上面那一段代码用可读性强的方式来写的话,如下面

parseInt(Math.random()*2e3)

那为什么使用~~能实现parseInt取整的效果呢?
《Javascript权威指南》里是这么说的:

位运算符"~"是一元运算符,位于一个整型参数之前,它将操作数的所有位取反。根据javascript中所带符号的整数的表示方法,对一个值使用"~",运算符相当于改变它的符号并减1。例如~0x0F
= 0xFFFFFFF0或-16。
请注意,上面的句子中提到的是所带符号的整数!那么也就是说~9.88只是取整数部分,也即是~9。

根据上面的描述,使用~相当于改变参数的符号并减1,那么也就是:

~9 => -9 - 1 =>  -10

然而,使用两个~,那么就是相当于boolean中的!!一样,只是!!返回的是布尔类型,~~返回的是原来的值,如果参数是小数的话,就相当于对该参数取整!

热点阅读

网友最爱