Diese Codezeile wertet einen Ausdruck aus und ruft dann eine Methode auf, die auf dem zurückgegebenen Wert basiert.
Der Ausdruck ('b' + 'a' + + 'a' + 'a')
besteht ausschließlich aus Zeichenfolgenliteralen und Additionsoperatoren.
- String-Literale "Ein String-Literal besteht aus null oder mehr Zeichen in einfachen oder doppelten Anführungszeichen."
- Der Additionsoperator (+) "Der Additionsoperator führt entweder eine Zeichenfolgenverkettung oder eine numerische Addition durch."
Eine implizite Aktion ist der Aufruf von ToNumber für eine Zeichenfolge
- Auf den String-Typ angewendete ToNumber "Auf Strings angewendete ToNumber wendet Grammatik auf den eingegebenen String an. Wenn die Grammatik den String nicht als Erweiterung von StringNumericLiteral interpretieren kann, ist das Ergebnis von ToNumber NaN."
Der Interpreter hat Regeln zum Parsen des Ausdrucks, indem er ihn in seine Bestandteile der linken und rechten Ausdrücke zerlegt.
Schritt 1: 'b' + 'a'
Linker Ausdruck: 'b'
Linker Wert: 'b'
Operator: + (eine der Ausdrucksseiten ist eine Zeichenfolge, also Zeichenfolgenverkettung)
Richtiger Ausdruck: 'a'
Richtiger Wert: 'a'
Ergebnis: 'ba'
Schritt 2: 'ba' + + 'a'
Linker Ausdruck: 'ba'
Linker Wert: 'ba'
Operator: + (eine der Ausdrucksseiten ist eine Zeichenfolge, also Zeichenfolgenverkettung)
Rechter Ausdruck: + 'a'
(Dies wertet den mathematischen Wert des Zeichens 'a' aus, vorausgesetzt, es handelt sich um eine positive Zahl aus dem + -Zeichen - das Minuszeichen hätte auch hier eine negative Zahl angezeigt - was zu NaN führt.)
Richtiger Wert: NaN (da der Operator eine Zeichenfolgenverkettung ist, wird toString für diesen Wert während der Verkettung aufgerufen.)
Ergebnis: 'baNaN'
Schritt 3: 'baNaN' + 'a'
Linker Ausdruck: 'baNaN'
Linker Wert: 'baNaN'
Operator: + (eine der Ausdrucksseiten ist eine Zeichenfolge, also Zeichenfolgenverkettung)
Richtiger Ausdruck: 'a'
Richtiger Wert: 'a'
Ergebnis: 'baNaNa'
Danach wurde der Gruppierungsausdruck ausgewertet und toLowerCase aufgerufen, wodurch wir mit Banane zurückbleiben.
+"a"
istNaN
.