Cette ligne de code évalue une expression, puis appelle une méthode basée sur la valeur renvoyée.
L'expression ('b' + 'a' + + 'a' + 'a')
est uniquement composée de littéraux de chaîne et d'opérateurs d'addition.
- Littéraux de chaîne "Un littéral de chaîne est composé de zéro ou plusieurs caractères entre guillemets simples ou doubles."
- L'opérateur d'addition (+) "L'opérateur d'addition effectue une concaténation de chaîne ou une addition numérique."
Une action implicite prise est l'appel de ToNumber sur une chaîne
- ToNumber appliqué au type de chaîne "ToNumber appliqué aux chaînes applique la grammaire à la chaîne d'entrée. Si la grammaire ne peut pas interpréter la chaîne comme une expansion de StringNumericLiteral, le résultat de ToNumber est NaN."
L'interpréteur a des règles sur la façon d'analyser l'expression, en la décomposant en ses composants d'expressions de gauche et de droite.
Étape 1: 'b' + 'a'
Expression de gauche: 'b'
Valeur de gauche: «b»
Opérateur: + (l'un des côtés d'expression est une chaîne, donc concaténation de chaîne)
Bonne expression: 'a'
bonne valeur: 'a'
Résultat: 'ba'
Étape 2: 'ba' + + 'a'
Expression gauche: 'ba'
Valeur de gauche: «ba»
Opérateur: + (l'un des côtés d'expression est une chaîne, donc concaténation de chaîne)
Expression de droite: + 'a'
(ceci évalue la valeur mathématique du caractère 'a' en supposant qu'il s'agit d'un nombre positif du signe + - le signe moins aurait également fonctionné ici indiquant un nombre négatif - ce qui donne NaN)
Valeur de droite: NaN (car l'opérateur est une concaténation de chaînes, toString est appelé sur cette valeur pendant la concaténation)
Résultat: 'baNaN'
Étape 3: 'baNaN' + 'a'
Expression de gauche: 'baNaN'
Valeur de gauche: 'baNaN'
Opérateur: + (l'un des côtés d'expression est une chaîne, donc concaténation de chaîne)
Bonne expression: 'a'
bonne valeur: 'a'
Résultat: 'baNaNa'
Après cela, l'expression de regroupement a été évaluée, et toLowerCase est appelé, ce qui nous laisse avec la banane.
+"a"
estNaN
.