javascript - 奇怪的 Date() 使用包含 NULL 字节的字符串创建

标签 javascript node.js null v8 null-terminated

我知道 JavaScript 不会像 C 或 C++ 那样以 NULL 终止字符串,但我遇到了一个无法解释的情况。

查看以下代码(在 Node.js v0.10.5 中执行):

> new Date('123')

Fri Jan 01 123 00:00:00 GMT+0100 (CET) // UNIX epoch : -58285702800000

> new Date('123\056')

Fri Jan 01 123 00:00:00 GMT+0100 (CET) // UNIX epoch : -58285702800000

> new Date('123\0456')

Tue Jun 01 123 00:00:00 GMT+0200 (CEST) // UNIX epoch : -58272660000000

> new Date('123\0567')

Thu Jul 01 123 00:00:00 GMT+0200 (CEST) // UNIX epoch : -58270068000000

> new Date('123\0999')

Fri Jan 01 123 00:00:00 GMT+0100 (CET)  // UNIX epoch : -58285702800000

> new Date('123\0555')

Sat May 01 123 00:00:00 GMT+0200 (CEST) // UNIX epoch : -58275338400000

> new Date('123\0655')

Sat Jan 01 12355 00:00:00 GMT+0100 (CET) // UNIX epoch : 327718911600000

我不确定这里发生了什么,有人可以向我解释一下吗?

有时,NULL 字节后面的整数定义了日期的月份,但月份并不总是对应于后面的数字。

最佳答案

这些是 3 位八进制转义符,而不是空字节。例如 '123\0456' 实际上是 '123%6'

关于javascript - 奇怪的 Date() 使用包含 NULL 字节的字符串创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19875406/

相关文章:

javascript - 我的 Web 文档中未启用画中画的可能原因是什么?

node.js - 不能需要 npm 包

javascript - 像这样将代码隐藏在 null 中安全吗?

c++ - 为什么我的程序打印出空终止符?

javascript - Safari 不使用应用程序缓存 list

javascript - HTML 5 Canvas 到视频流不起作用

javascript - Angular-seed POST 对于每个浏览器的行为都不同

javascript - 从回调函数内部将项目添加到全局数组,然后全局访问它

javascript - 在将响应发送回客户端之前,如何等待 Mandrill 的交付响应?

c# - 将 null 传递给默认值为 null 的可选参数