js 实现uuid
在JavaScript中生成UUID(通用唯一标识符)可以通过多种方式实现,以下是几种常见的方法:
使用crypto.randomUUID()
现代浏览器支持crypto.randomUUID()方法,直接生成符合RFC 4122标准的UUID:

const uuid = crypto.randomUUID();
console.log(uuid); // 输出类似 "123e4567-e89b-12d3-a456-426614174000"
使用crypto.getRandomValues()
对于不支持randomUUID()的环境,可以通过crypto.getRandomValues()生成随机数并格式化:
function generateUUID() {
return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c =>
(c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
);
}
console.log(generateUUID()); // 输出类似 "7982fcfe-5721-4632-bede-6000885be57d"
使用第三方库
常见的库如uuid提供了更丰富的UUID生成支持:

npm install uuid
代码示例:
import { v4 as uuidv4 } from 'uuid';
const uuid = uuidv4();
console.log(uuid); // 输出类似 "1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed"
传统方法(不推荐)
早期浏览器可能依赖时间戳和随机数生成,但安全性较低:
function legacyUUID() {
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(legacyUUID()); // 输出类似 "e4b35252-4e60-4e83-a5e9-1a2b3c4d5e6f"
注意事项
- 优先使用
crypto.randomUUID()或uuid库,确保安全性和兼容性。 - 传统方法可能因随机数质量导致冲突风险,仅适用于非关键场景。






