Skip to content

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.getRandomValues API,需要在 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 数组以减少内存分配(但需注意线程安全)

相关函数