2012-08-31 34 views
11

我有一個腳本,當用戶加載時,會創建一個唯一的ID。然後保存在localStorage並用於跟蹤交易。有點像使用cookie,除非瀏覽器正在生成唯一的ID,否則在發送到服務器時可能會發生衝突。現在,我使用下面的代碼:在JavaScript中創建全局唯一ID

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,以防止在服務器上的衝突的一些反饋。有任何想法嗎?

+0

@CDSanchez母親effin ...我怎麼會錯過在我的搜索... –

+0

沒有JavaScript有GUID? –

+0

@SamIam phpjs,下劃線,我敢肯定,更多的圖書館有一個uniqueId函數,但JS本身不提供一個 – SgtPooki

回答

8

我以前用過這個。碰撞機率應該很低。

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()); 
}; 
+0

我喜歡你限制隨機值長度的方式。 –

+0

@詹姆斯南,我沒有得到它..你能解釋一下嗎? –

+0

'0x10000'是做什麼的? –