2019-07-02

[].forEach.call($$("*"),function(a){
  a.style.outline="1px solid #"+(~~(Math.random()*(1<<24))).toString(16)
})

$$函数

是许多现代浏览器命令行API中的一个部分,它等价于 document.querySelectorAll,你可以将一个CSS选择器作为这个函数的参数,然后你就能够获得当前页面中所有匹配这个CSS选择器的元素列表。如果你在浏览器控制台以外的地方,你可以使用 document.querySelectorAll('*') 来代替 $$('*')
获得了页面内所有的元素

toString

1.用toString函数将一个十进制的数组转换为一个十六进制整数。这个函数可以接受一个参数,如果参数缺省,默认为十进制,
例:(30).toString(); // "30"
(30).toString(10); // "30"
(30).toString(16); // "1e" 十六进制
(30).toString(2); // "11110" 二进制

parseInt

parseInt函数将十六进制数字转换为十进制。
例:parseInt("30"); // "30"
parseInt("30", 10); // "30"
parseInt("1e", 16); // "30"
parseInt("11110", 2); // "30"

parseInt("ffffff", 16) == 16777215  ,而这里的16777215实际上是2^24-1。
如果你对二进制数学熟悉的话,你可能会知道1<<24 == 16777216。
再进一步,你每在1后面添加一个0,你就相当于多做了一次2的乘方:
1 // 1 == 2^0
100 // 4 == 2^2
10000 // 16 == 2^4
1000000000000000000000000 // 16777216 == 2^24
因此,在这里我们可以知道Math.random()*(1<<24)表示一个位于0和16777216之间的数。

Math.random

Math.random返回的是一个浮点数
~ 波浪操作符在JavaScript中被用来对一个变量进行取反。
~~ 两次取反可以去掉一个浮点数的小数部分,因此~~的作用相当于parseInt:
例:var a = 12.34, // ~~a = 12 ~~a == parseInt(a, 10); // true

你可能感兴趣的:(2019-07-02)