在JavaScript里生成UUID通常指产生一个符合RFC 4122标准的36位字符串,用来在分布式系统中唯一标识对象。实际开发中可根据运行环境选择不同方案。

使用crypto.randomUUID
现代浏览器和Node.js 14.17+都提供了原生的crypto.randomUUID()方法,它基于密码学安全随机数生成版本4的UUID,使用简单且可靠。
// 浏览器或Node环境中调用原生API const uuid = crypto.randomUUID(); console.log(uuid); // 例如 "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
基于Math.random的简易实现
如果运行环境较老且不需要高安全性,可以用Math.random()拼装UUID。这种方式有极小碰撞概率,不适合敏感场景。
// 简单生成v4 UUID,非密码学安全
function generateUUID() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
const r = Math.random() * 16 | 0;
const v = c === 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
}
console.log(generateUUID());
使用第三方库
在复杂项目中可引入如uuid库,它支持多个版本并兼顾兼容性。
// 安装后引入使用
// import { v4 as uuidv4 } from 'uuid';
const uuidv4 = require('uuid').v4;
console.log(uuidv4());
注意事项
- 优先使用
crypto.randomUUID()以保证随机性安全。 - 注意IE等旧浏览器不支持原生方法,需要polyfill。
- UUID不是绝对防碰撞,关键业务可结合数据库唯一索引。
| 方法 | 安全性 | 环境支持 |
|---|---|---|
| crypto.randomUUID | 高 | 现代浏览器、Node 14.17+ |
| Math.random实现 | 低 | 所有环境 |
| uuid库 | 高 | 通过打包支持多数环境 |
总结:在支持的环境下直接用crypto.randomUUID,老旧环境用库或简易函数,但需评估碰撞风险。
JavaScriptUUID随机数修改时间:2026-07-31 03:36:14