是什么让此伪GUID生成器优于math.random()?

Fre*_*nöw 5 javascript uuid guid

我在这里找到问题:

在JavaScript中创建GUID / UUID?

答案提供了以下JS:

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

function guid() {
   return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
}
Run Code Online (Sandbox Code Playgroud)

现在,这对我来说似乎有些愚蠢。为什么要这么重复?我计划使用此名称来命名要上传到服务器的文件,以使它们不会彼此覆盖。看起来它不会总是生成一个唯一的数字。

上面的代码有什么好处呢math.random()?它甚至不会改变种子。

抱歉,我从来没有使用过GUID / UUID,并且某些代码对我来说真的没有任何意义...

澄清说明

很多人没有像我问的那样回答这个问题。很多人在解释GUID并不总是唯一的,等等等等。那不是我要的 我在问,在just上使用它有什么意义math.random()

乔在评论中似乎为我提供了最佳答案。

Joe*_*Joe 4

即使这个答案也说:“你想要实际的 GUID,还是只是看起来像 GUID 的随机数?” 因为那些不是真正的 GUID。同样来自原始线程:“无法在 Javascript 中生成真正的 GUID,因为它们依赖于浏览器不公开的本地计算机的属性。” 所以我的问题是:你需要 GUID 吗?或者只是一个随机文件名?作为消费者,GUID 并没有什么神奇之处,重要的不是它的外观,而是它的生成方式。对于随机文件名,使用时钟滴答声+随机数将(至少)有效......

在你的情况下,没有理由。但是,如果您的 JS 代码正在与需要 GUID 或某种形式的内容进行通信,则您将需要传递类似格式的内容,因为您无法在纯 JS 中生成真实的内容。