numeri che iniziano con JavaScript leader 0
s seguita da una delle cifre
sono octal (base 8) piuttosto che in decimale (base 10).
Si può vedere questo in un esempio come questo:
10 === 010 // false
8 === 010 // true
Nota che se c'è un 8
o 9
cifre, non è un numero ottale valida e, quindi, sarà interpretato come un numero decimale:
89 === 089 // true
Nota che letterali ottale non funzionano in modalità rigorosa:
(function(){ "use strict"; return 010 === 10; })()
// SyntaxError: Octal literals are not allowed in strict mode.
Questo è descritto nella sezione B.1.1 of the JavaScript specification come comportamento non normativo per la compatibilità con le versioni precedenti di ECMAScript. Un numero intero ottale letterale è definito come segue:
OctalIntegerLiteral ::
0 OctalDigit
OctalIntegerLiteral OctalDigit
OctalDigit :: one of
0 1 2 3 4 5 6 7
fonte
2015-05-22 01:34:54
'1 == 01' e' 1 === 01' sono entrambi vero nel mio browser (Chrome) – Phil
Ho provato a console firefox, ma 1 == 01 (vero) 1 === 01 (vero) – andyf
Sei sicuro di non aver effettivamente provato '10 == 010'? – Barmar