我试图编写一个包含小写/大写字母,数字和符号的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