0xFFFFFF

0xFFFFFF或者#FFFFFF 表示白色,和RGB(255, 255, 255)一样。 0x表示16进制.

颜色有3个部分,红绿蓝。通常每个存储一个单字节。因此可以位于0,255。或者位于0,FF之间。颜色是#RGB, 因此可以为0x0 到0xFFFFFF. 随机数乘以0xFFFFF意味着可以生成任何任何颜色

"0x" is a prefix meaning "just to be sure, the rest of this is a hex value, okay? Even if it doesn't happen to have any A-F symbols in it, don't go interpreting it as decimal; and especially make sure you don't interpret it as an identifier name."

0x 可能是最常见的前缀--对于16进制数来说,出现在许多语言和环境里。在汇编语言里,你可能会见到$ 前缀,h 后缀。

16进制三联体, FF, FF, FF。

F在16进制中表示十进制的15,FF在十进制就是15*16+15=255。
0xFFFFFF 等于十进制的16777215
255 255 255 就是白色

生成随机颜色

var getRandomColor = function(){
    return '#'+(Math.random()*0xffffff<<0).toString(16); 
}
/*
其它一切应该都是不言自明的
random() 生成[0, 1)
乘以0xffffff 变成[0, 0xffffff)
这样会产生一个bug, 因为0xffffff 不会产生
然后取整rounded/floored, 转换成前缀为#的字符串
*/

<< 是按位左移运算符,右边的操作数是要移位的位数,移位0位没有效果,按位移位仅为整数定义,严格来说JavaScript没有整数 - 它只有一个由IEEE双精度实现的数字类型。

为了让 << 有意义,左手操作数必须首先舍入为整数。此操作中使用的舍入类型是截断/截尾,举个例子,小数点右侧的部分都丢掉。这也叫做向零舍入。round-towards-zero (我们通常见到的舍入方法是像最近的整数舍入。 round-towards-nearest,)

还有以下的舍入类型

  • round-towards-positive-infinity
  • round-towards-negative-infinity
  • round-away-from-zero

对于正数,round-toward-zero 和Math.floor() 效果一样, 但是写<<0更快. 实际上,写 |0更快,它对值0调用按位OR运算符,它也是一个操作-除了将左侧的操作数截尾为整数之外,没有其他效果。

https://www.sitepoint.com/javascript-generate-lighter-darker-color/

你可能感兴趣的:(0xFFFFFF)