Je me suis amusé avec différentes choses, comme ça.
var a = 1, b = 2;
alert(a + - + - + - + - + - + - + - + b); //alerts -1
et je pourrais enlever les espaces, et ça marcherait toujours.
a+-+-+-+-+-+-+-+b
Puis j'ai essayé
a + + b
Il s'est exécuté et a évalué à 3, mais lorsque j'ai retiré les espaces, ( a++b
), il n'a pas voulu s'exécuter, et il y avait un avertissement qui disait "Confusing plusses".
Je peux comprendre que dans des cas comme
a+++++b
qui pourrait être interprété comme l'un des éléments suivants
(a++) + (++b)
(a++) + +(+b)
a + +(+(++b))
a + +(+(+(+b)))
que ce serait confus.
Mais dans le cas de
a++b
la seule façon valide d'interpréter ceci, pour autant que je puisse dire, c'est
a + +b
Pourquoi est-ce que a++b
travail ?