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;
}
};
Xin chào các bạn, tôi gặp phải đoạn mã này. Nó là một hàm tiện ích trong JavaScript sẽ chuyển đổi màu sắc qua lại giữa các số và chuỗi. Có 2 phần mà tôi không chắc chắn,Javascript - Chuyển đổi màu (số -> chuỗi) ngược lại
Đầu tiên, return (color|0);
có nghĩa là gì? |
là gì? trong JavaScript?
Thứ hai, trong dòng
color = '#' + ('00000' + (color | 0).toString(16)).substr(-6);
tại sao tôi cần phải chắc chắn rằng các số thập lục phân được đệm ra? Chúng ta đang cố gắng đạt được điều gì ở đây?
Gọi chức năng với một số thập lục như utils.parseColor(0xFFFF00)
, trả về chuỗi giá trị : "#ffff00"
. Việc chuyển một chuỗi thập lục phân kiểu CSS trả về cùng một chuỗi chưa được sửa đổi. Hàm cũng chấp nhận tham số thứ hai, tùy chọn, toNumber
, nếu được đặt thành true
, trả về giá trị màu số . Ví dụ: gọi số utils.parseColor("#FFFF00", true)
hoặc utils.parseColor(0xFFFF00, true)
, cả hai đều trả về số 16776960
.
Cảm ơn, Venn.
câu trả lời này! Làm tốt lắm Tikhon! –