0

这是我遇到的用于在脚本中创建 uniqueID 的代码片段。

var now = (new Date()).valueOf();
var future = (new Date()).valueOf();
while(future == now){
    future = (new Date()).valueOf();
}
return future;

我的问题是,为什么要使用两个日期对象和一个while循环来.valueOf()代替.getTime()and,以避免在多次调用时返回相同值的变化。当然,返回相同毫秒表示的日期的机会微乎其微吗?有什么想法吗?

4

2 回答 2

1

正如您所说,取回相同 uuid 的机会很小 - 但并非不可能。没有真正需要使用 valueOf 代替 getTime。还有更好的生成 UUIDS 的算法,请参阅https://github.com/pnegri/uuid-js以获得经过良好测试的实现,这些实现也是基于时间的。

于 2013-06-18T14:10:05.313 回答
0

我个人会使用.getTime()添加某种基本操作的方法,例如以毫秒为单位添加到返回数量的伪随机数生成。仅仅因为毫秒不是 100% 可靠的输出,正如 Dan Pichelman 所说,“这些天你会惊讶于你在一毫秒内能做多少事情”。

于 2013-06-18T14:13:20.543 回答