1. 字符集与基数

  • 采用自定义字符集:0W6FGX4Zabc3dA1UBCe5HuxIJK7EvwL2STMYfg8klmVnopDN9hijOPQRqrstyz

  • 字符集长度为 62,这意味着生成的 UUID 会基于 62 进制

2. 基础生成逻辑

  • 函数参数:函数接收一个可选参数len,其默认值为 32,该参数用于指定 UUID 的长度。

  • 头部生成:函数会生成 9 位随机字符,这些字符是从自定义字符集中随机选取的。

  • 中间部分生成(当长度≥32 时):会把当前时间的毫秒数转换为 16 进制字符串并添加到 UUID 中。

  • 尾部补全:若生成的字符串长度未达到指定的len,就会继续从自定义字符集中随机选取字符来补全。

3. 随机性与唯一性

  • 随机性来源:主要依靠Math.random()函数来获取随机数。

  • 唯一性保障:借助当前时间的毫秒数(转换为 16 进制)以及随机字符共同保证生成的 UUID 具有唯一性。

4. 应用场景

  • 适用于生成短 ID,像 URL 短链接、临时性标识等场景。

  • 由于其随机性和唯一性,也能在一般性的唯一标识需求中发挥作用。

5. 注意要点

  • 生成的 ID 并非严格意义上的 UUID,它不遵循 RFC 4122 标准。

  • 当需要更高的唯一性时,建议使用专业的 UUID 库,例如uuid包。

示例生成结果

  • 当长度为 32 时,可能生成类似6e4dA1UBC5f15c9d41e5b7e7c8f9d32这样的字符串。

  • 当长度为 16 时,可能生成类似GXu7EvwL2Sabc3dA这样的字符串。