生成随机颜色的方法,已测试可以用,但不理解,有能够看懂的吗?

生成随机颜色的方法,已测试可以用,但不理解,有能够看懂的吗?

var getRandomColor = function(){
    return '#'+(Math.random()*0xffffff<<0).toString(16); 
}
阅读 2.1k
2 个回答
  1. Math.random()得到一个 0 ~ 1 之间的浮点数
  2. Math.random()*0xffffff 得到一个 0x0 ~ 0xffffff 之间的浮点数
  3. Math.random()*0xffffff<<0,去除小数点,得到一个整数(原理:所有位运算符的操作数都以big-endian顺序和二进制补码格式转换为带符号的32位整数。)
  4. (Math.random()*0xffffff<<0).toString(16) 得到一个16进制字符串

补充楼上的,这个方法有个bug
当随机到的数Math.random()*0xffffff<0xfffff(5个f)的时候,并没有补全,导致颜色码不可用。

推荐问题