看到一段代码:
var rand = function(rMi, rMa){return ~~((Math.random()*(rMa-rMi+1))+rMi);}
“~~”不知道是什么运算符?
看到一段代码:
var rand = function(rMi, rMa){return ~~((Math.random()*(rMa-rMi+1))+rMi);}
“~~”不知道是什么运算符?
先上栗子:
~~null; // => 0
~~undefined; // => 0
~~0; // => 0
~~{}; // => 0
~~[]; // => 0
~~(1/0); // => 0
~~false; // => 0
~~true; // => 1
~~1.2543; // => 1
~~4.9; // => 4
~~(-2.999); // => -2
对于非数字,~~的结果为0,布尔的true是1
对于大于0的数,~~相当于是Math.floor
对于小于0的数,~~相当于是Math.ceil
不过~~在性能上来说更快。
你可能遇到的位运算:
`+` 转数字类型。
`1<<n` 代表取2的n次方
`&1` 判断正负数
`>>>0` 判断正负
`^` 装逼的调换值的写法:
例如:
var num1 = 1, num2 = 2;
num1 ^= num2; // num1 = num1 ^ num2 = 1 ^ 2 = 3
num2 ^= num1; // num2 = num2 ^ (num1 ^ num2) = 2 ^ (1 ^ 2) = 1
num1 ^= num2; // num1 = num1 ^ num2 = 3 ^ 1 = 2
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
~
是二进制的按位取反,~~
可以理解为是取整的简写