Ran*_*lue 18 javascript datetime date node.js
我们var o = {a:Date.now(), b:Date.now()}.
是o.a === o.b永远true?(我最感兴趣的是Node.JS.)
ssu*_*ube 21
没有.
在我们进入规范所说的内容之前,Date.now可以在运行时用用户定义的函数替换.这适用于Node和浏览器:
let oldNow = Date.now;
Date.now = function () {
let wait = oldNow() + 1000;
while (oldNow() < wait) {
// wait one second
}
return oldNow();
}
Run Code Online (Sandbox Code Playgroud)
有了它,每次调用至少需要一秒钟,所以你的两个调用永远不会相等.
当我们查看(15.9.4.4)的规范时Date.now,它只是说它返回
指定现在发生呼叫的UTC日期和时间的时间值
它不能保证两次调用返回相同的值.据我所知,规范指定Date对象具有毫秒精度(15.9.1.1)但不保证准确性.
由于底层计时器不精确而且两者在同一刻度内发生,因此同一行中的两个调用可能会返回相同的时间,但规范似乎没有指定.
不,试试这个简单的测试:
var test = new Array();
for(var i=0; i<40000; i++){
test.push({a:Date.now(), b:Date.now()});
}
for(var i=0 ; i<test.length; i++){
if(test[i].a != test[i].b){
console.warn('a & b !=');
}
}
Run Code Online (Sandbox Code Playgroud)
你会看到会发生什么!
| 归档时间: |
|
| 查看次数: |
860 次 |
| 最近记录: |