我需要生成一个唯一的号码才能在我的代码中使用。我使用
var id = new Date().valueOf()
我知道上面的返回毫秒数。 但这些值并不是唯一的。例如: 1385035174752 。这个数字生成两倍或更多。
我的问题是为什么它不是唯一的?如何从当前日期/时间获得唯一编号?
答案 0 :(得分:9)
如果您需要唯一性,请使用Math.random()
和不任何Date()
API。
Math.random
返回介于0和1之间的整数。如果您确实想要基于当前时间的半唯一编号,则可以合并Date
API与Math.random
。 For example:
var id = new Date().getTime() + Math.random();
在现代浏览器中,您还可以使用performance.now()
。此API保证每个新调用的返回值都是唯一的。
答案 1 :(得分:1)
在Windows上,计时器的分辨率约为10.5毫秒。所以你有机会在几毫秒之后获得相同的值。当然有更好的计时器,但AFAIK它们不适用于JavaScript。
答案 2 :(得分:0)
example.Even performance.now() 有时也不会给出唯一的数字。您必须制作自己的系统来生成它。类似于创建一个计数器,每次访问时将其加 1。