Incrementos de JavaScript [duplicado]

Posible duplicado:
++ algunasVariable vs. someVariable ++ en Javascript

Sé que puede agregar uno a una variable simplemente haciendo i++ (asumiendo que i es su variable). Esto se puede ver mejor cuando se itera a través de una matriz o se usa en una instrucción "for". Después de encontrar un código para usar en línea, noté que la instrucción for usaba ++i (en oposición a i++).

Me preguntaba si había alguna diferencia significativa o si los dos se manejan de manera diferente.

preguntado el 16 de mayo de 11 a las 16:05

6 Respuestas

Si hay un a lo grande diferencia.

var i = 0;

var c = i++; //c = 0, i = 1
    c = ++i; //c = 2, i = 2
    //to make things more confusing:
    c = ++c + c++; //c = 6
    //but:
    c = c++ + c++; //c = 13

Y aquí hay un violín para ponerlo todo junto: http://jsfiddle.net/maniator/ZcKSF/

contestado el 16 de mayo de 11 a las 21:05

+1 porque muestra el comportamiento en lugar de simplemente describirlo como "incremento previo / incremento posterior". - KeithS

Esta será la respuesta ... en 8 minutos: 3 - Freesnöw

El valor de ++i is i + 1 y el valor de i++ es sólo i. Después de que cualquiera haya evaluado, i is i + 1. Es una diferencia en el tiempo, por lo que a menudo se les llama 'preincremento' y 'postincremento'. Sin embargo, en un bucle for, rara vez importa.

contestado el 16 de mayo de 11 a las 20:05

Personas como Douglas Crockford aconsejan no utilizar esa forma de incrementar, entre otras razones por lo que describió Rafe Kettler. No importa la experiencia que tengas, a veces ++i/i++ sorprenderte. La alternativa es simplemente agregar 1 a i usando i += 1, legible, comprensible y sin ambigüedades.

contestado el 16 de mayo de 11 a las 21:05

Buena publicación :) ¡Gracias por el comentario! - Freesnöw

echa un vistazo a este enlace: http://www.w3schools.com/js/js_operators.asp es post incremento versus preincremento. Ambos terminan incrementando el valor, pero uno devuelve el valor ANTES de incrementar (++ y) y el otro devuelve el valor DESPUÉS (y ++). Sin embargo, no hace ninguna diferencia cuando se usa en un bucle for -

for( var i = 0; i < 100; i++ ) { ... }

es el mismo que

for( var i = 0; i < 100; ++i ) { ... }

contestado el 16 de mayo de 11 a las 20:05

a=1;
b=1;
c=++a;//the value of a is incremented first and then assigned to c
d=b++;//the value of b is assigned to d first then incremented

ahora si imprime a, b, c, d ... la salida será:

2 2 2 1

contestado el 16 de mayo de 11 a las 21:05

++ i se llama preincremento e i ++ se llama postincremento. La diferencia es cuando se incrementa la variable. El incremento previo de una variable generalmente agrega 1 y luego usa ese valor, mientras que el incremento posterior usa la variable y luego se incrementa.

contestado el 16 de mayo de 11 a las 20:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.