8

¿Qué diferencias existen entre estas dos expresiones?

x++ y ++x


Este es el codigo que estaba intentado entender:

var x=1, y=1, z=0;
do{
    z=x+y;
    console.log("z= "+ z);}

while(++x<=1 && y++>1);
console.log ("++x="+x + " y++="+y);
z+=x+y;
document.write(z);

NOTA: He encontrado esta misma pregunta pero respuesta para Java y no sé si la respuesta es correcta para JavaScript

rnrneverdies
  • 16,491
  • 3
  • 49
  • 79
àngelv
  • 111
  • 7

3 Answers3

11

El operador ++ hace los mismo: aumentar el valor.

La única diferencia es que si el operador aparece antes de la variable, el valor se modifica antes de evaluar la expresión.

Ejemplo visual:

let a = 0;
let b = 0;
let i = 0;

while ( i < 5 ) {

  console.log('Variable a: ' + ++a );
  console.log('Variable b: ' + b++ ); 
  
  console.log( 'Iteración #' + i );
  console.log( '-----------' );
  
  i++;
}
Black Sheep
  • 13,096
  • 6
  • 36
  • 60
9

x++ ejecuta la instrucción y luego incrementa el valor.

++x incrementa el valor y luego ejecuta la instrucción.

var x = 1;
var y = x++; // y = 1, x = 2
var z = ++x; // z = 3, x = 3
Kast
  • 135
  • 8
5

Tanto Java como Javascript tienen una sintaxis heredera de C/C++, así que sí, el comportamiento es el mismo en todos estos lenguajes: ++ antes indica que el incremento se hace primero, y si se pone después indica que primero se hace el resto de operaciones (comparaciones, asignaciones, paso de parámetros...)

  • f(n++) es lo mismo que f(n); n=n+1;
  • f(++n) es lo mismo que n=n+1; f(n);

Lo mismo aplica a las condiciones o asignaciones:

  • b=n++ > 1 es lo mismo que b=n>1; n=n+1;
  • b=--n; es lo mismo que n=n-1; b=n;
Pablo Lozano
  • 45,934
  • 7
  • 48
  • 87