Dans la question soulevée, on se demande quelle est la sortie de 'console.log(1 + '2' + 3)'
lorsqu'elle est exécutée dans l'environnement Node.js. La bonne réponse, comme on nous le fait remarquer, est '123'
.
Cela peut sembler déroutant au premier abord, surtout si l'on s'attendait à une opération arithmétique simple. Pour comprendre pourquoi la sortie n'est pas numérique, il faut comprendre comment fonctionne l'opérateur '+'
en JavaScript, dont Node.js est une implémentation.
En JavaScript, l'opérateur '+'
est utilisé pour deux opérations distinctes : l'addition arithmétique et la concaténation de chaînes de caractères. Quand les deux opérandes sont des nombres, '+' effectue une addition. Par contre, si l'une ou l'autre des opérations est une chaîne de caractères, '+' effectue une concaténation.
Examinons de plus près ce qui se passe lors de l'exécution du code 'console.log(1 + '2' + 3)'
.
La première opération est 1 + '2'
. Comme l'un des opérandes est une chaîne de caractères, l'opérateur '+' effectue une concaténation, ce qui donne la chaîne de caractères '12'
.
La deuxième opération est '12' + 3
. De nouveau, comme l'un des opérandes est une chaîne de caractères, l'opérateur '+' effectue une concaténation, ce qui donne la chaîne de caractères '123'
.
Et c'est cette chaîne de caractères que console.log
affiche à l'écran.
Cette caractéristique de l'opérateur '+' en JavaScript, bien que puissante et flexible, peut occasionner des surprises si l'on n'est pas prudent. Par exemple, bien d'autres langages lanceraient une erreur si l'on tentait d'additionner un nombre et une chaîne de caractères.
Il est donc recommandé de toujours être clair sur les types de données que l'on travaille pour éviter des résultats surprenants. Et lorsqu'il est nécessaire de convertir une chaîne de caractères en nombre, des méthodes comme Number() ou parseInt() peuvent être utilisées pour garantir le type correct.