如何用 JavaScript 生成 UUID / GUID
UUID 是「Universally Unique IDentifier」(通用唯一标识符)的缩写,目的是唯一的标示信息。UUID 包含 32 个十六进制数字,并用「-」分隔成五组,每组分别有 8、4、4、4、12 的数字。例如:「550e8400-e29b-41d4-a716-446655440000」是一组完整的 UUID。
这里列了几种使用 JavaScript 产生 UUID / GUID 的方法、优劣比较。
方法 1
最简单的方法就是使用 Math.random() 产出任意 16 进制数字,但格式不符合 RFC4122 规范,且可能重复(collision),储存前必须做比对。
function _uuid() {
function s4() {
return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);
}
return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();
}
var uuid = _uuid(); // b3165466-df5b-c3d7-0e94-79d94e8c692f
接下来都是基于 Math.random() 做改善。
方法 2
先摆好格式,再利用 Math.random() 产出任意数字填入格式中。这个方法解决了方法 1 的格式问题,但仍可能有 collision。
function _uuid() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function() {
r = .() * | ;
v = c == ? r : (r & | );
v.();
});
}
uuid = ();


