2011-05-16 9 views
8

Duplicar posibles:
++someVariable Vs. someVariable++ in Javascriptincrementos de JavaScript

Sé que usted puede añadir una a una variable simplemente haciendo i++ (asumiendo i es la variable). Esto se puede ver mejor al iterar a través de una matriz o usarla en una declaración "para". Después de encontrar algún código para usar en línea, noté que la instrucción for usa ++i (como se apuntó a i++).

Me preguntaba si hubo alguna diferencia significativa o si los dos se manejan de manera diferente.

+0

Responda aquí: [http://stackoverflow.com/questions/3469885/somevariable-vs-somevariable-in-javascript](http://stackoverflow.com/questions/3469885/somevariable-vs-somevariable-in- javascript) – pixelbobby

Respuesta

29

Sí, hay un gran 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í es un violín a poner todo junto: http://jsfiddle.net/maniator/ZcKSF/

+1

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

+0

@KeithS gracias^_^ – Neal

+0

Esta será la respuesta ... en 8 minutos: 3 – FreeSnow

4

El valor de ++i es i + 1 y el valor de i++ es solo i. Después de que cualquiera de los dos haya evaluado, i es i + 1. Es una diferencia en el tiempo, razón por la cual a menudo se les llama 'preincremento' y 'post-incremento'. Sin embargo, en un ciclo for, raramente importa.

1

++ i se llama preincremento e i ++ se denomina incremento posterior. La diferencia es cuando la variable se incrementa. El pre-incremento de una variable usualmente agrega 1 y luego usa ese valor, mientras que el post-incremento usa la variable y luego se incrementa.

2

echar un vistazo a este enlace: http://www.w3schools.com/js/js_operators.asp es posterior incremento en comparación con la subasta previa. 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 se hace ninguna diferencia cuando se utiliza en un bucle for -

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

es lo mismo que

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

[No nos vinculemos con w3schools.] (Http://w3fools.com) – Pointy

2
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..the salida será:

3

La gente como Douglas Crockford no aconsejan utilizar esa forma de incrementar, entre otras razones por lo que describió Rafe Kettler. No importa la experiencia que tenga, a veces ++i/i++ le sorprenderá. La alternativa es simplemente agregar 1 a i usando i += 1, legible, comprensible y no ambiguo.

+0

Publicación interesante :) ¡Gracias por el comentario! – FreeSnow

Cuestiones relacionadas