Lao*_*tih 5 javascript numbers date integer-overflow unix-timestamp
当然,这又花了 20 万年才发生。但是在 的值超过 的值后,Javascript约会系统会出错吗?会发生什么后果?Date.now()Number.MAX_SAFE_INTEGER
也许这个问题看起来很奇怪而且没用。但是任何人都可以回答我的好奇心以及其他可能有相同问题的人。
ECMA-262 排除了您所描述的内容。Date.now可以返回的最大值是 \xc2\xb18.64e15,这完全在ECMAScript安全支持的整数范围内。
\n\n最大值可以表示纪元(1970 年 1 月 1 日)两侧的 1e9 天,因此范围约为 \xc2\xb1273,790 年。我认为在问题出现之前会有时间解决它。
\n\n构造最大值的日期会返回 +275760-09-13T00:00:00.000Z 的日期。向时间值添加一毫秒会返回无效日期:
\n\n// Max value returnable by Date.now\r\nlet maxDateNowValue = 8.64e15;\r\n\r\nconsole.log(new Date(maxDateNowValue).toISOString()); // +275760-09-13T00:00:00.000Z\r\n\r\n// Max value plus 1 millisecond\r\nlet plusOneMS = maxDateNowValue + 1;\r\n\r\nconsole.log(new Date(plusOneMS).toString()); // Invalid DateRun Code Online (Sandbox Code Playgroud)\r\n