以下是我在脚本中创建uniqueID的代码段。
var now = (new Date()).valueOf();
var future = (new Date()).valueOf();
while(future == now){
future = (new Date()).valueOf();
}
return future;
我的问题是,为什么使用.valueOf()
而不是.getTime()
,并且是两个日期对象和一个while循环的目的,以避免在多次调用时返回相同值的更改。当然,返回相同毫秒表示日期的机会很小甚至没有?有什么想法吗?
答案 0 :(得分:1)
正如你所说,回到同一个uuid的机会很小 - 但并非不可能。没有必要使用valueOf而不是getTime。此外,有更好的生成UUIDS的算法,请参阅https://github.com/pnegri/uuid-js,以获得经过充分测试的实施,这些实施也是基于时间的。
答案 1 :(得分:0)
我个人会使用.getTime()
方法添加某种基本操作,这样的伪随机数生成会以毫秒为单位添加到返回的数量中。仅仅因为毫秒不是100%的可靠输出,正如丹·皮尔克曼所说,“你会惊讶地发现,这些天你能在毫秒内做多少事情。”