我試圖編寫一個包含小寫/大寫字母,數字和符號的8個字符的JavaScript GUID生成器。我找到了這些解決方案,但需要解釋每個解決方案的情況。最初我以爲我需要一個字符串來存放所有的字母/數字/符號,這些字母/數字/符號可以用隨機數函數索引來建立一個新的GUID,但是這些解決方案似乎都是憑空創造出數字/字母/符號。Javascript GUID(全局唯一標識符)生成器說明
在解決方案1中,「1+」和「0x10000」的用途是什麼? 「.toString(16)」和「.substring(1)」的用途是什麼?它是如何通過這一小段代碼生成數字/符號/ AND字母的?
解決方案1:
function guid() {
function s4() {
return Math.floor((1 + Math.random()) * 0x10000)
.toString(16)
.substring(1);
}
return s4() + s4() + '-' + s4() + '-' + s4() + '-' +
s4() + '-' + s4() + s4() + s4();
}
在溶液2中,我看到的GUID如何爲32個字符長,但不明白爲什麼的Math.random被乘以特異性 「16」,用一個toString(16 )附加,但這次沒有「.substring(x)」?
解決方案2:
function generateGuid() {
var result, i, j;
result = '';
for(j=0; j<32; j++) {
if(j == 8 || j == 12|| j == 16|| j == 20)
result = result + '-';
i = Math.floor(Math.random()*16).toString(16).toUpperCase();
result = result + i;
}
return result;
}
無需解釋GUID的結構,也不是什麼連字符是XD
任何及所有詳細的說明表示讚賞!
[Number.prototype.toString](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toString) – Pointy
不確定是否重要,但這不是一個GUID ..這只是僞隨機字符序列 – Slai