1、实现方法:‘0123456789abcdef’[Math.floor(Math.random()*16)])随意截取字符串中的一个字符,然后判断字符串的长度是否为6,如果是,则返回color,如果不是,color : arguments.callee(color)返回正在执行的函数,即(color += ‘0123456789abcdef’[Math.floor(Math.random()*16)])并将color作为参数传进去;
var getRandomColor = function(){
return'#' +
(function(color){
return (color +='0123456789abcdef'[Math.floor(Math.random()*16)])
&& (color.length == 6) ?color : arguments.callee(color);
})('');
}
2、把Math对象,用于生成颜色值的字符串提取出来,并利用第三个参数来判断是否还继续调用自身,当5减为0的时候,一共就有留个字符,再加上最后c=0时前面添加上‘#’。
var getRandomColor = function(){
return (function(m,s,c){
return (c ? arguments.callee(m,s,c-1) : '#') +
s[m.floor(m.random() * 16)]
})(Math,'0123456789abcdef',5)
}
3、这个实现非常逆天,虽然有点小bug。我们知道十六进制表示的颜色值是从#000000到#ffffff,后面那六位数是16进制数,相当于"0x000000"到"0xffffff"。这实现的思路是将hex的最大值ffffff先转换为10进制,进行random后再转换回16进制。
var getRandomColor = function(){
return '#'+Math.floor(Math.random()*16777215).toString(16);
}
//将0xffffff转化为10进制
var result = parseInt("0xffffff",16).toString(10);
console.log(result);
//16777215
4、通过hsb生成随机颜色
var getRandomColor = function(){
return "hsb(" + Math.random()+ ", 1, 1)";
}
【JS|JS之获取随机颜色4种方法】参考文档:https://www.cnblogs.com/rubylouvre/archive/2009/09/24/1572977.html
推荐阅读
- 读书笔记|读书笔记 "起步时最重要的是什么"
- JavaScript|JavaScript: BOM对象 和 DOM 对象的增删改查
- 前端|web前端dya07--ES6高级语法的转化&render&vue与webpack&export
- 读书笔记|《白话大数据和机器学习》学习笔记1
- JS/JavaScript|JS/JavaScript CRC8多项式 16进制
- JS|VUE学习笔记[30-46]
- 腾讯TEG实习|腾讯实习——Vue解决跨域请求
- 地图|高德地图清除指定覆盖物 自定义覆盖物样式(完整dome)
- Pyecharts|Pyecharts 猎聘招聘数据可视化
- flex|C语言-使用goto语句从循环中跳出