2

仕様によると、

long setInterval(Function handler, optional long timeout, any... arguments);

setInterval()longタイムアウト遅延を受け入れることになっています。

ただし、64 ビット Linux では、符号付き 32 ビット int のように動作します。他のプラットフォームではテストしていません。コメントを残してみてください。

明らかな質問は -なぜですか?

誰かがこれをすぐに出力する理由を説明できますか:

let maxSigned32 = 2147483647;
let safeInt = maxSigned32 + 1;

console.log(safeInt);
console.log(Number.MAX_SAFE_INTEGER);
console.log(safeInt < Number.MAX_SAFE_INTEGER); // true

let days = Math.round(safeInt / (1000.0 * 60 * 60 * 24));

console.log(safeInt + ' ms is ~' + days + ' days');

setTimeout(() => {
  console.log('I should not see this today')
}, safeInt);

Chrome 52 と Firefox 48 の両方でこの (間違った?) 結果が得られました。

4

1 に答える 1