JavaScript 生成随机颜色
代码
function color(color) {
return (color += "0123456789abcdef"[Math.floor(Math.random() * 6)]) && (color.length == 6 ? color : arguments.callee(color));
}
使用
// 用法1:全部随机生成
"#" + color(""); // '#201050'
// 用法2:指定前面字母
"#" + color("a2"); // '#a21034'
讲解
代码可以分成2部分来看:
color += "0123456789abcdef"[Math.floor(Math.random() * 6)]
这部分无需讲解,就是在可选范围内随机获取字符。
重点来了!!
arguments.callee(color)
相当于递归调用,将前面已经添加的值作为参数传递。
如:
- 开始为空字符串 “”
- 经过随机抽取 “a”
- 然后不满足6个字符串长度,进行递归(将“a”传递进去)
- 经过随机抽取 “a2”
- 经过一系列 2-4 步骤后,满足6个字符串长度
- 返回 color 【整个函数执行完毕】
拓展知识
arguments.callee(color)
已弃用!
已弃用: 不再推荐使用该特性。虽然一些浏览器仍然支持它,但也许已从相关的 web 标准中移除,也许正准备移除或出于兼容性而保留。请尽量不要使用该特性,并更新现有的代码;
所以讲了这么多!!
统统都没有用!!!!
我们可以直接递归,通过函数名调用(老版本不支持)!
所以,我们简写代码:
function getColor(color="") {
return (color += "0123456789abcdef"[Math.floor(Math.random() * 6)]) && (color.length == 6 ? color : getColor(color));
}
其实这样也不符合我们习惯,再改!
function getColor(color="") {
if (color.length >= 6) {
return color;
}
// 这个随机字符串可不能再简写哈
color += "0123456789abcdef"[Math.floor(Math.random() * 6)];
// 递归
return getColor(color);
}
好了,本次讲解完毕!
今日所学知识点:递归调用
分类:
前端
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)