Esto es lo que normalmente escribo para bucles.
para (var i = 0; i <20; i ++) {....}Pero creo que algunas personas escriben esto
para (var i = 0; i <20; ++ i) {..}¿Qué impacto tendrá esto en el bucle for?
1. Parece que no hay diferencia para ...
Pero cuando se usa en la asignación, hay una diferencia ...
var a = 1; var b = a ++; var c = 1; var d = ++ c; console.log (b, d); // 1, 2
A ++ es aplicar un primero, luego agrégalo usted mismo
++ A es para agregarlo primero y luego aplicar un
2. Probablemente sea un hábito traído por la era C/C ++. La leyenda dice que ++ I es más rápido que i ++, pero de hecho, el rendimiento de estos dos es similar en JS.
En cuanto a los detalles específicos, la especificación se escribe de la siguiente manera:
Para la situación del frente -
UnaryExpression: ++ unaryExpressionLet expr es el resultado de evaluar unaryExpression. Ifabrupt (estado) .return NewValue.
Una traducción aproximada:
1. Deje que Expr sea igual al resultado de la expresión actual (esa es la parte después de ++)
2. Deje que OldValue sea igual al resultado de la conversión de Expr a un número
3. Use las mismas reglas que el operador " +", deje que NewValue = OldValue + 1
4. Asignar NewValue a Expr
5. Toda la operación devuelve NewValue
Para la situación detrás de esto -
PostfixExpression: LefthandSideExpression ++
1. El resultado es el resultado de la evaluación de la expresión de la parte izquierda.
2.léquelo OldValue sea Tonumber (GetValue (LHS)).
3. Returnifabrupt (OldValue).
4. El resultado de NewValue sea el resultado de agregar el valor 1 a OldValue, utilizando las mismas reglas que para el operador + (ver 12.7.5).
5. El estado de énfasis será putvalue (LHS, NewValue).
6. Returnifabrupt (estado).
7. Regrese OldValue.
Una traducción aproximada -
1. Deje que LHS sea igual al resultado de la expresión actual (la parte anterior de ++)
2. Deje que OldValue sea igual a LHS para convertir el resultado del número
3. Use las mismas reglas que el operador " +", deje que NewValue = OldValue + 1
4. Asigne NewValue a LHS
5. Toda la operación devuelve OldValue
Se puede ver que la diferencia entre los dos es solo el último paso. Si toda la operación regresa después de agregar una o antes de agregar una.
Para la declaración para:
para (var i = 0; i <n; i ++)
La última columna es solo autograbada y no asigna este valor a nadie, por lo que desde este punto de vista, es lo mismo que los símbolos ++ se colocarán frente o después.
3. De hecho, no hay mucha diferencia. Pero si quieres seguir ese poco de eficiencia, ++ seré más eficiente.
De hecho, es de la biblioteca estándar STD de C ++. Cuando yo es un iterador de un contenedor STD, no es un número, i ++ generará una operación de asignación adicional, por lo que ++ I tiene un mayor rendimiento. Por lo tanto, a las personas que están acostumbradas a C ++ les gusta usar ++ I para ahorrar dinero cuando no es un valor numérico.
Lo anterior es la diferencia entre i ++ y ++ i en js para bucle introducido por el editor. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!