/ / pourquoi 1 + + “1” === 2; + “1” + + “1” === 2 et “1” + “1” === “11” en javascript [dupliquer] - javascript

pourquoi 1 + + “1” === 2; + “1” + + “1” === 2 et “1” + “1” === “11” en javascript [dupliquer] - javascript

Est-ce que l'opérateur d'addition avant le caractère en javascript les convertit en nombre?

1 + + "1" === 2;
+"1" + + "1" === 2;
"1" + "1" ===  "11"

Plus tôt question n’explique pas pourquoi cela se produit ne nous indique que différentes manières de convertir des chaînes en nombre et vice-versa.

Réponses:

16 pour la réponse № 1
1 + + "1" === 2;

Opérateur unaire + a une priorité plus élevée, donc +"1" sera évalué en premier, en convertissant "1" en entier de valeur 1, donc il deviendra

1+1 === 2

La deuxième ligne

+"1" + + "1" === 2;

C'est pareil. Opérateur unaire + a une priorité plus élevée, donc les deux +"1" sera évalué à une valeur entière positive de 1.

"1" + "1" ===  "11"

Parce qu'en JavaScript + est également un opérateur de concaténation de chaînes si les deux opérandes sont des chaînes, cela concaténera les deux chaînes.

Plus d'information https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators

Mise à jour: @torazaburo est correct.

  • L'évaluation de +"1" dans le code ici n’a rien à voir avec la priorité des opérateurs.

  • La concaténation de chaîne aura lieu si l'un des opérandes est une chaîne.


3 pour la réponse № 2

Ce que vous cherchez, c'est le unaire plus. Permet d’analyser les 2 premiers cas:

L'opérateur unaire plus précède son opérande et en évalue l'opérande, mais tente de le convertir en nombre, s'il ne l'est pas déjà.

1 + + "1" === 2

+ "1" une partie est en train de convertir la chaîne "1" à un nombre 1. Le nombre 1 est ensuite ajouté à l'autre nombre 1, ce qui donne 2 === 2

+ "1" + + "1" === 2

Comme ci-dessus, mais il y a maintenant 2 opérations unaires. Donc les deux cordes "1" sont convertis en numéro 1, ce qui donne 2 === 2


2 pour la réponse № 3

Dans JS, il existe une contrainte de type implicite. Par exemple, l'opérateur binaire plus convertit un nombre en chaîne si l'autre opérande est une chaîne. "1" + 2 === "12" ou 3 + "4" === "34".

Cependant, lorsqu'il est utilisé avec un seul opérande, il fonctionne en arrière et +"1" contraint le "1" chaîne à un nombre 1. Juste comme parseInt("1").

Alors +"1" + 3 === 4


-1 pour la réponse № 4

Les 2 premiers, vous lancez le numéro en préfixant avec +.

Le dernier est juste concat de 2 chaînes, par défaut, js va monter, et il jettera le numéro à la chaîne 1 + "1" === "11"