generateRandomId / ENLetters
generateRandomId方法使用 Web Crypto API 生成一个 8 位随机 ID 字符串。ENLetters 是 dlsjs 提供的大写字母常量字符串。
语法
javascript
generateRandomId()
ENLetters描述
generateRandomId 函数使用浏览器原生的 Web Crypto API(crypto.getRandomValues)生成加密安全的随机值,然后从字符集 abcdefghijklmnopqrstuvwxyz0123456789(小写字母 + 数字,共 36 个字符)中选取字符,组成一个长度为 8 的随机字符串。
相比 Math.random(),Web Crypto API 提供的随机数具有更高的加密强度,适合用于需要不可预测性的场景,如临时 ID 生成、令牌生成等。
ENLetters 是一个常量字符串,值为 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',包含 26 个大写英文字母,可用于各种需要大写字母的场景,如列号生成、编码等。
注意事项
generateRandomId依赖浏览器的crypto.getRandomValuesAPI,需要在 HTTPS 环境或 localhost 下使用- 生成的 ID 长度固定为 8 位,由小写字母和数字组成
- 由于使用
randomValues[i] % chars.length取模,字符分布存在轻微偏差(36 不能被 256 整除),但对一般使用场景影响可忽略 - 在不支持 Web Crypto API 的环境中(如旧版浏览器)调用会抛出错误
ENLetters是字符串常量,不是函数,直接引用即可- 生成的 ID 不保证绝对唯一,但在一般场景下碰撞概率极低(36^8 ≈ 2.8 万亿种可能)
示例
generateRandomId 基本用法
ENLetters 常量使用
浏览器兼容
generateRandomId 依赖 Web Crypto API,需要以下浏览器版本支持:
- Chrome 11+
- Firefox 21+
- Safari 5+
- Edge 12+
- IE 11+(部分支持)
在非 HTTPS 环境下(除 localhost 外),部分浏览器可能不提供 crypto.getRandomValues。
ENLetters 是纯字符串常量,在所有 JavaScript 环境中均可使用。
性能考虑
- 时间复杂度: O(1) - 固定生成 8 位字符
- 空间复杂度: O(1) - 仅使用固定大小的 Uint8Array 和结果字符串
- Web Crypto API 的
crypto.getRandomValues是原生实现,性能优于纯 JavaScript 的随机数生成 - 一次调用只请求 8 个随机字节,开销极小
- 批量生成 ID 时,建议复用 Uint8Array 数组以减少内存分配(但需注意线程安全)
相关函数
isType- 可用于校验生成的 ID 类型matchRules- 通用条件判断