2

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 バイトの後の整数が日付の月を定義しているように見えることがありますが、月は必ずしも次の数字に対応しているとは限りません。

4

1 に答える 1

2

これらは 3 桁の 8 進エスケープであり、null バイトではありません。たとえば'123\0456'、 real'123%6'です。

于 2013-11-09T11:42:30.483 に答える