JavaScript는 C 또는 C++과 같이 문자열을 종료하지 않는다는 것을 알고 있지만 설명 할 수없는 경우가 있습니다. (Node.js를의 v0.10.5에서 실행) 다음 코드에서이상한 날짜()가 NULL 바이트를 포함하는 문자열로 생성 됨
봐 :
> 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 바이트 다음의 정수는 날짜의 월을 정의하지만 월은 항상 다음 숫자와 일치하지 않는 것처럼 보일 수 있습니다.
NULL 바이트 = '\ x00'이 아니라'\ 0'. –
사실 'test \ 0other'와''test \ x00other ''둘 다''\ 000, '\ x00'과'\ u0000'가 실제로 같은 값이기 때문에'test \ u0000other' . –
'\ x00'은 뒤에 오는 것에 관계없이 항상 NULL 바이트이며,'\ 0'은 아무런 숫자도 뒤따라 있지 않을 때 단지 NULL 바이트입니다. –