30 votes

L'ajout de + "" à la chaîne ajoute "0"

Par une faute de frappe accidentelle, j'ai rencontré un comportement que je ne peux pas expliquer.

Quand j'ai

 var text = "abc";
text += + "";
 

le text variable devient soudainement abc0 .

Quelqu'un peut-il donner un aperçu de cela, s'il vous plaît?

48voto

torazaburo Points 6335

+ "" correspond au nombre 0. C'est parce que, pour appliquer le unaire plus opérateur de, "" est contrainte à un nombre--le même que Number(""), ce qui résulte en 0 si la chaîne est vide.

Lorsque vous puis sur "ajouter" (+ , dans ce cas - +=) le nombre 0 à la chaîne de caractères "abc", il est contraint à la chaîne de caractères "0", résultant en "abc0".

À partir de la spec:

Un StringNumericLiteral qui est vide ou ne contient que des blancs de l'espace est converti à +0.

10voto

CodeiSir Points 7265

Comme vous pouvez le voir dans TypeScript (+ "") est un nombre (0):

entrez la description de l'image ici

1voto

J0B Points 360

de: http://xkr.us/articles/javascript/unary-add/

En JavaScript, il est possible d'utiliser l'opérateur + seul avant un seul élément. Cela indique une opération mathématique et essaie de convertir l'élément en nombre. Si la conversion échoue, elle sera évaluée en NaN. Ceci est particulièrement utile lorsque l'on veut convertir rapidement une chaîne en un nombre, mais peut également être utilisé sur un ensemble sélectionné d'autres types.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X