JavaScript 生成 UUID 的常见方法与避坑指南
在前后端分离架构中,前端生成唯一标识符(UUID)的需求日益增多。本文从基础实现到标准库方案,详细解析 JavaScript 生成 UUID 的方法、优缺点及生产环境注意事项。
为什么前端需要生成 UUID
常见场景包括:
- 离线数据同步:用户无网时本地存储,联网后上传。
- 埋点上报:为每个事件分配唯一 ID。
- 本地缓存 Key:区分 localStorage 中的多条草稿或临时数据。
- WebSocket 消息去重:防止网络抖动导致的重复处理。
UUID 基础概念
UUID(Universally Unique Identifier)通用唯一识别码,标准格式为 8-4-4-4-12 的 32 个十六进制数字。前端常用版本:
- v4:纯随机生成,最常用。
- v1:基于时间戳 + MAC 地址,前端通常无法获取 MAC,故较少使用。
自定义实现方案
1. Math.random() 实现
function generateUUID() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random() * 16 | 0;
var v = c === 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
}
console.log(generateUUID());
风险:Math.random() 是伪随机,部分低端安卓机存在随机性偏差,可能导致 ID 碰撞。且非加密安全,不适合用作会话令牌。
2. Date.now() 组合
function makeId() {
let id = '';
timestamp = .().();
randomPart = .().().(, );
id = ;
id;
}


