¿Cómo el siguiente código da un resultado de 10?
var myVar = 2; myVar = ++myVar + myVar++ + myVar--; console.log(myVar);y cuando se proporciona directamente como se muestra a continuación sin asignar a myVar, ¿da el resultado como 3 en javascript?
var myVar = 2; ++myVar + myVar++ + myVar--; console.log(myVar);Hay dos factores principales que debemos analizar:
Pre-Incremento: la variable se incrementa primero y luego se usa su valor:
++xPost-Incremento: primero se usa el valor de la variable y luego se incrementa el valor:
x++Con el primer ejemplo:
var myVar = 2; myVar = ++myVar + myVar++ + myVar--; console.log(myVar); ++myVar incrementa el valor de 2 a 3 primero, por lo que se usa el valor 3 . Luego, para myVar++ , se usa primero el valor 3 y luego se incrementa a 4. Para myVar-- , se usa 4 y luego el valor disminuye de 4 a 3.
Al final, la expresión será: 3 + 3 + 4 = 10
Para el segundo ejemplo:
var myVar = 2; ++myVar + myVar++ + myVar--; console.log(myVar); Los + individuales entre myVar no hacen nada. Los están sumando, pero no hay ninguna variable que almacene ese valor. Entonces, lo único que hace esa línea es aplicar los cambios de ++myVar , myVar++ y myVar-- a myVar , dándole un valor de 3 (de 2 a 3 a 4 a 3).
¡Espero que esto haya ayudado! Por favor, hágamelo saber si necesita más aclaraciones o detalles :)
Como dijo @Teemu. Leer la documentación es realmente útil. Documentación
Tal vez esto ayude también a entender esto.
var myVar = 2; myVar += myVar++; console.log(myVar);