พฤติกรรม Javascript พร้อมตัวเลข [ซ้ำกัน]

ฉันพยายามเปรียบเทียบ 10 และ 010 as 10 == 010 แต่ได้ผลลัพธ์เป็น false

จากนั้นฉันพยายามพิมพ์/แจ้งเตือนค่าต่อไปนี้

10 result 10
010 result 8
12 result 12
012 result 10
100 result 100
0100 result 64
65 result 65
065 result 53
99 result 99
099 result 99
196 result 196
0196 result 196

ผลลัพธ์แบบเดียวกันสำหรับจำนวนลบด้วย

-99 result -99
-099 result -99
-32 result -32
-032 result -26
-196 result -196
-0196 result -196
-66 result -66
-066 result -54

ข้อมูลเพิ่มเติม

จาก (+/-)078 ถึง (+/-)099 ผลลัพธ์ถือว่าถูกต้อง

Ex:

78 result 78
078 result 78
-87 result -87
-087 result -87

พฤติกรรมเดียวกันใน Chrome, FireFox, IE

ฉันสงสัยว่าทำไมพฤติกรรมแปลก ๆ นี้? มันเป็นข้อผิดพลาดของ JS หรือคุณสมบัติพิเศษของ JS ใครสามารถอธิบายได้ว่าทำไมถึงเป็นเช่นนั้น

ขอบคุณล่วงหน้า.

โปรดแสดงความคิดเห็นหากคุณต้องการรายละเอียดใดๆ


person D P Venkatesh    schedule 29.10.2014    source แหล่งที่มา
comment
กรุณาแสดง JS จริงที่เกี่ยวข้อง แต่โปรดทราบว่าศูนย์นำหน้าเป็นการบอกว่าคุณต้องการให้ตัวเลขนั้นถือเป็นฐานแปด (และ 0x นำหน้าเช่นเดียวกับใน 0x123 บอกว่าตัวเลขนั้นเป็นเลขฐานสิบหก)   -  person nnnnnn    schedule 29.10.2014
comment
มันเป็นคุณสมบัติ ตัวเลขที่ขึ้นต้นด้วย 0 จะถือเป็นฐานแปด ในขณะที่เริ่มต้นด้วย 0x จะถือเป็นเลขฐานสิบหก   -  person pawel    schedule 29.10.2014
comment
เช่นเดียวกับความคิดเห็นข้างต้นจะถูกมองว่าเป็นฐานแปด คุณยังสามารถทดสอบได้โดยทำ 10 == 012 (จริง) เพราะเช่นเดียวกับที่คุณพบข้างต้น 012 ฐานแปดคือ 10 ในฐานสิบ นี่คือเหตุผลว่าทำไมการตั้งค่า Radix ใน parseInt() และมีการระบุไว้ในคำอธิบายด้วย   -  person Spokey    schedule 29.10.2014