Questa riga di codice valuta un'espressione e quindi chiama un metodo basato sul valore restituito.
L'espressione ('b' + 'a' + + 'a' + 'a')
è composta esclusivamente da letterali stringa e operatori di addizione.
- Letterali stringa "Un letterale stringa è zero o più caratteri racchiusi tra virgolette singole o doppie."
- L'operatore Addizione (+) "L'operatore addizione esegue la concatenazione di stringhe o l'aggiunta numerica."
Un'azione implicita è la chiamata a ToNumber su una stringa
- ToNumber applicato al tipo di stringa "ToNumber applicato alle stringhe applica la grammatica all'input String. Se la grammatica non è in grado di interpretare la stringa come un'espansione di StringNumericLiteral, il risultato di ToNumber è NaN."
L'interprete ha regole su come analizzare l'espressione, suddividendola nelle sue componenti delle espressioni della mano destra e sinistra.
Passo 1: 'b' + 'a'
Espressione sinistra: 'b'
Valore sinistro: 'b'
Operatore: + (uno dei lati dell'espressione è una stringa, quindi concatenazione di stringhe)
Espressione giusta: 'a'
giusto valore: 'a'
Risultato: 'ba'
Passo 2: 'ba' + + 'a'
Espressione sinistra: 'ba'
Valore sinistro: 'ba'
Operatore: + (uno dei lati dell'espressione è una stringa, quindi concatenazione di stringhe)
Espressione giusta: + 'a'
(questo valuta il valore matematico del carattere 'a' supponendo che sia un numero positivo dal segno + - il segno meno avrebbe funzionato anche qui indicando un numero negativo - che risulta in NaN)
Valore giusto: NaN (poiché l'operatore è la concatenazione di stringhe, toString viene chiamato su questo valore durante la concatenazione)
Risultato: 'baNaN'
Passaggio 3: 'baNaN' + 'a'
Espressione sinistra: 'baNaN'
Valore sinistro: 'baNaN'
Operatore: + (uno dei lati dell'espressione è una stringa, quindi concatenazione di stringhe)
Espressione giusta: 'a'
giusto valore: 'a'
Risultato: 'baNaNa'
Dopo questo è stata valutata l'espressione di raggruppamento e viene chiamato toLowerCase che ci lascia con banana.
+"a"
èNaN
.