let a = 70; a++; // This returns the value before incrementing. console.log(a) // returns 71¿Puede alguien explicarme por qué esto no devuelve 70, por favor?
let b = 70; ++b; // Using it as a prefix returns the value after incrementing. console.log(b) // returns 71Entiendo cómo funciona el prefijo.
He leído explicaciones y visto videos sobre este tema, pero todavía me resulta confuso. Gracias.
"return" no es el término correcto (las funciones regresan, las expresiones no).
a++ se evalúa como el valor antes de incrementar.
No está mirando el valor que evalúa la expresión, solo está mirando el valor de la variable después del incremento.
let a = 70; let result_of_a_plus_plus = a++; // This evaluates as the value before incrementing. let b = 70; let result_of_plus_plus_b = ++b; // Using it as a prefix increments the value before the expression is evaluated. console.log({ a, result_of_a_plus_plus, b, result_of_plus_plus_b });Ambas versiones de ellos incrementan el valor al que se aplican. Si no hace nada con el valor de la expresión de incremento en sí, son equivalentes, ambos hacen lo mismo que i += 1 . La única vez que importa es cuando usa el resultado de la expresión de incremento:
let a = 70; console.log(a++); // outputs 70, the old value of a, but a will be 71 afterwards console.log(a) // outputs 71; no matter how you increment, after the increment, the value has changed let b = 70; console.log(++b); // outputs 71; the new value of b is produced console.log(b) // outputs 71; same as in case aLa diferencia que está tratando de notar solo es visible cuando usa estos operadores de prefijo/postfijo en línea, algo como esto:
let a = 5; console.log(a++); let b = 5; console.log(++b);