当前位置: 首页 > news >正文

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) 相当于递归调用,将前面已经添加的值作为参数传递。

如:

  1. 开始为空字符串 “”
  2. 经过随机抽取 “a”
  3. 然后不满足6个字符串长度,进行递归(将“a”传递进去)
  4. 经过随机抽取 “a2”
  5. 经过一系列 2-4 步骤后,满足6个字符串长度
  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);
}

好了,本次讲解完毕!

今日所学知识点:递归调用

http://www.lryc.cn/news/185595.html

相关文章:

  • Savepoints
  • 【MySQL】基本查询(二)
  • Qt:多语言支持,构建全面应用程序“
  • 性能监控-链路级监控工具
  • clickonce 程序发布到ftp在使用cnd 加速https 支持下载,会不会报错
  • Nginx详细学习记录
  • golang gin——中间件编程以及jwt认证和跨域配置中间件案例
  • 如何快速制作令人惊叹的长图海报
  • D (1092) : DS循环链表—约瑟夫环(Ver. I - A)
  • Python爬虫(二十二)_selenium案例:模拟登陆豆瓣
  • 1. Flink程序打Jar包
  • 水波纹文字效果动画
  • 【1.1】神经网络:关于神经网络的介绍
  • java项目中git的.ignore文件设置
  • 11.3 读图举例
  • 黑马JVM总结(二十八)
  • 2023年DDoS攻击发展趋势的分析和推断
  • RT-Thread 内存管理(学习二)
  • 怎么修改jupyter lab 的工作路径而不是直接再桌面路径打开
  • 高精度NTP时钟服务器(时间同步服务器)技术方案探讨
  • LFU 缓存 -- LinkedHashSet
  • 用IDEA操作数据库--MySQL
  • 扫雷游戏的递归解法
  • java练习 day5
  • 腾讯云轻量和CVM有啥区别?怎么选择服务器配置?
  • 服务器or虚拟机安装SSH和虚拟机or服务器设置远程服务权限
  • Sentinel入门
  • Mac解压缩软件BetterZip免费版注册码下载
  • 在win10里顺利安装了apache2.4.41和php7.4.29以及mysql8.0.33
  • 云服务仿真:完全模拟 AWS 服务的本地体验 | 开源日报 No.45