在JavaScript中创建全局唯一ID

Create Globally Unique ID in JavaScript

本问题已经有最佳答案,请猛点这里访问。

我有一个脚本,当用户加载时,它会创建一个唯一的ID,然后保存在localStorage中,用于跟踪事务。有点像使用cookie,除非浏览器正在生成唯一的ID,否则发送到服务器时可能会发生冲突。现在我使用以下代码:

1
2
3
4
5
6
function genID() {
    return Math.random().toString(36).substr(2)
        + Math.random().toString(36).substr(2)
        + Math.random().toString(36).substr(2)
        + Math.random().toString(36).substr(2);
}

我意识到这是一个超基本的实现,并且希望得到一些关于更好的方法的反馈,以创建一个"更随机"的ID,以防止服务器上的冲突。有什么想法吗?


我以前用过这个。碰撞几率应该很低。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var generateUid = function (separator) {
    /// <summary>
    ///    Creates a unique id for identification purposes.
    /// </summary>
    /// <param name="separator" type="String" optional="true">
    /// The optional separator for grouping the generated segmants: default"-".    
    /// </param>

    var delim = separator ||"-";

    function S4() {
        return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
    }

    return (S4() + S4() + delim + S4() + delim + S4() + delim + S4() + delim + S4() + S4() + S4());
};