我正在尝试解码我在 Raphael.js 的源代码中找到的这段代码(它从 HSL 颜色转换为 RGB 颜色,这只是函数的一部分):
var R, G, B, X, C;
h = (h % 360) / 60;
C = 2 * s * (l < .5 ? l : 1 - l);
X = C * (1 - abs(h % 2 - 1));
R = G = B = l - C / 2;
h = ~~h;
R += [C, X, 0, 0, X, C][h];
G += [X, C, C, X, 0, 0][h];
B += [0, 0, X, C, C, X][h];
现在,我知道是什么h = ~~h
(基本上是一个有一些关键差异的数字),但我无法弄清楚这意味着什么:
R += [C, X, 0, 0, X, C][h];
为什么他要创建一个数组然后引用[h]
它?他是否从一组值中找到变量h
等于的值?(但如果他已经知道 ' 的价值,他为什么要这样做h
?)我实际上从未见过这样的事情,如果是这样的话,我认为它非常聪明。