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 № 11 + + "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"