utils.parseColor = function (color, toNumber) {
if (toNumber === true) {
if (typeof color === 'number') {
return (color | 0); //chop off decimal
}
if (typeof color === 'string' && color[0] === '#') {
color = color.slice(1);
}
return window.parseInt(color, 16);
} else {
if (typeof color === 'number') {
//make sure our hexadecimal number is padded out
color = '#' + ('00000' + (color | 0).toString(16)).substr(-6);
}
return color;
}
};
嘿,伙计们,我遇到这段代码。它是JavaScript中的一个实用功能,可以在数字和字符串之间来回转换颜色。有2个部分我不太确定,Javascript - 转换颜色(数字 - >字符串)反之亦然
首先, return (color|0);
是什么意思?什么是|
?在JavaScript中?
其次,在该行
color = '#' + ('00000' + (color | 0).toString(16)).substr(-6);
为什么我需要确保十六进制数被填充?我们想在这里实现什么?
调用像utils.parseColor(0xFFFF00)
用十六进制数的函数,返回字符串 值:"#ffff00"
。传递CSS样式的十六进制字符串将返回未修改的相同字符串。 函数还接受第二个可选参数toNumber
,如果设置为true
,则返回数值 颜色值。例如,拨打utils.parseColor("#FFFF00", true)
或 utils.parseColor(0xFFFF00, true)
,两者均返回号码16776960
。
谢谢, 维恩。
这个答案! Tikhon干得好! – 2016-04-14 12:18:00