javascript i ++ vs ++ i

Em javascript eu vi i++ usado em muitos casos, e eu entendo que ele adiciona um ao valor anterior:

Mas o que acontece quando eu faço isso:

 ++i; 

E é diferente usando o -- operador (além disso, é claro que é subtração ao invés de adição)?

A diferença entre i++ e ++i é o valor da expressão.

O valor i++ é o valor de i antes do incremento. O valor de ++i é o valor de i após o incremento.

Exemplo:

 var i = 42; alert(i++); // shows 42 alert(i); // shows 43 i = 42; alert(++i); // shows 43 alert(i); // shows 43 

Os operadores --i e --i funcionam da mesma maneira.

++variable incrementa a variável, retornando o novo valor.

variable++ incrementa a variável, mas retorna o valor antigo.

--variable variável decrementa a variável, retornando o novo valor.

variable-- decrementa a variável, mas retorna o valor antigo.

Por exemplo:

 a = 5; b = 5; c = ++a; d = b++; 

a é 6, b é 6, c é 6 e d é 5.

Se você não estiver usando o resultado, os operadores de prefixo funcionam igualmente para os operadores de postfix.

i++ = Use o valor de i na instrução e aumente em 1
++i = Aumenta o valor de i por 1, em seguida, use na instrução.

Eu pensei em completude gostaria de acrescentar uma resposta específica para a primeira pergunta do OP:

Um de seus exemplos mostra o i ++ / ++ i sendo usado em um loop for:

 for (i=1; i< =10; i++) { alert(i); } 

você receberá 1-10 em seus alertas, não importa o que você usa. Exemplo:

 console.log("i++"); for (i=1; i< =10; i++) { console.log(i); } console.log("++i"); for (i=1; i<=10; ++i) { console.log(i); } 

Cole-os em uma janela de console e você pode ver que ambos têm a mesma saída.

 var i = 0; console.log(i++); // 0 console.log(++i); // 2 

Ele determina se o incremento ocorre antes ou depois do valor da variável ser usado.

 var j = 2; console.log(j++); // 2 console.log(j); // 3 var k = 2; console.log(++k); // 3 console.log(k); // 3 

Um caso que todas essas respostas falham em mencionar é o que acontece quando i++ e ++i são usados ​​em operações com outros números. Enquanto todo o conceito “ i++ é antes, ++i é posterior ” é fácil de entender quando a expressão é por si só, fica muito mais confuso quando você começa a combinar instruções. Veja os Exemplos C e D abaixo.

 // Example A var i = 42; var a = i++; // equivalent to `var a = i; i++;` console.log(a); // 42 console.log(i); // 43 // Example B var i = 42; var b = ++i; // equivalent to `i++; var b = i;` console.log(b); // 43 console.log(i); // 43 // Example C var i = 42; var c = i++ * 2; // equivalent to `var c = i*2; i++;` console.log(c); // 84 console.log(i); // 43 // Example D var i = 42; var d = ++i * 2; // equivalent to `i++; var d = i*2;` console.log(d); // 86 console.log(i); // 43 

Observe que no Exemplo C, o i++ não é avaliado até depois da multiplicação e da atribuição de c . Isso contraria a concepção errônea de que “ i++ deve ser avaliado primeiro na ordem das operações”. Em outras palavras, a instrução i++ * 2 na verdade calcula i * 2 antes de incrementar i .

Eu sei, esta pergunta de 2011 tem sido respondida há muito tempo.

Variável ++: Incrementar a variável antes de usar a variável
variável ++: Incrementar variável após usar a variável

Mas achei que ainda seria útil include uma resposta com um trecho de código para confirmar como eles se comportam em um loop for.

Apenas para verificar em seu navegador que não há realmente nenhuma diferença ao usar um ++ i versus um i ++ na declaração de loop for.
E jogando –i versus i– enquanto estamos nisso.

 console.log("-- with looping --"); console.log("using ++i in a for loop"); for (var i=1; i< =3; ++i) { console.log(i); } console.log("using i++ in a for loop"); for (var i=1; i<=3; i++) { console.log(i); } console.log("using --i in a for loop"); for (var i=3; i>=1; --i) { console.log(i); } console.log("using i-- in a for loop"); for (var i=3; i>=1; i--) { console.log(i); } console.log("-- without looping --"); var i = 1; console.log("i: "+ i); console.log("i++: "+ i++); console.log("i: "+ i); console.log("++i: "+ ++i); console.log("i: "+ i); console.log("--i: "+ --i); console.log("i: "+ i); console.log("i--: "+ i--); console.log("i: "+ i);