Une chose intéressante, je n'en ai jamais vu a été posté dans une autre question. Ils avaient quelque chose comme:
var i = + +1;
Ils pensaient que les extra - +
converti en une chaîne, mais ils ont été tout simplement l'ajout d'une chaîne de caractères qui est ce qu'il fait à convertir.
Ceci, cependant, m'amènent à la question: qu'est-ce que se passe ici?
J'aurais effectivement prévu que pour être une erreur de compilation, mais le JavaScript (au moins dans google Chrome) est très bien avec elle... ça ne fait rien.
J'ai créé un petit JSFiddle à démontrer: Démo
var i = 5;
var j = + +i;
document.body.innerHTML = i === j ? 'Same' : 'Different';
Quelqu'un sait ce qui se passe réellement et ce que JavaScript est en train de faire avec ce processus?
J'ai pensé que peut-être cela le traiter comme ++i
, mais i
n'a pas d'incrément, et vous pouvez même le faire avec une valeur (par exemple, + +5
), ce qui vous ne pouvez pas faire avec ++
(par exemple, ++5
est une erreur de référence).
L'espacement également de ne pas modifier (par exemple, + + 1
et + +1
sont les mêmes).
Ma meilleure supposition est que c'est essentiellement les traiter comme positif/négatif signes et de les mettre ensemble. Il ressemble 1 == - -1
et -1 == + -1
, mais qui est tout simplement bizarre.
Est-ce juste une étrange comportement, ou est-elle documentée dans un standard de quelque part?