JavaScript Zahlen mit führenden 0
s durch eine der Ziffern
sind octal (base 8) anstatt in dezimal (Basis 10) beginnt, gefolgt.
Sie können dies wie folgt in einem Beispiel sehen:
10 === 010 // false
8 === 010 // true
Beachten Sie, dass, wenn es eine 8
oder 9
Ziffer ist, es keine gültige Oktalzahl und wird somit als Dezimalzahl interpretiert werden:
89 === 089 // true
Beachten Sie, dass oktal Literale funktionieren nicht im strikten Modus:
(function(){ "use strict"; return 010 === 10; })()
// SyntaxError: Octal literals are not allowed in strict mode.
Dies wird in Abschnitt B.1.1 of the JavaScript specification als nicht normatives Verhalten für die Kompatibilität mit älteren Versionen von ECMAScript beschrieben. Eine oktale Ganzzahlliteral ist wie folgt definiert:
OctalIntegerLiteral ::
0 OctalDigit
OctalIntegerLiteral OctalDigit
OctalDigit :: one of
0 1 2 3 4 5 6 7
'1 == 01 'und 01' '1 === beide wahr ist in meinem Browser (Chrom) – Phil
I in der folgenden Konsole versucht, aber 1 == 01 (true) 1 === 01 (true) – andyf
Sind Sie sicher, dass Sie nicht wirklich '10 == 010' probiert haben? – Barmar