Gostou do nosso conteúdo? Te ajudou?
Nos ajude também! Faça um PIX, de qualquer valor:
programacao.progressiva@gmail.com

Operadores de Atribuição em JavaScript: ++. --. +=, -=, *=, /= e %=

Neste tutorial de JS, vamos aprender sobre os operadores de atribuição, que nos auxiliarão a escrever menos código, de maneira clara e concisa.

Operadores de Incremento e Decremento: ++ e --


Os chamados operadores de atribuição composta nada mais são que meios, maneiras ou atalhos, para escrevermos expressões de atribuição. Vamos usar bastante eles a partir de agora, principalmente em nossa seção de laços e loopings em JS.

No tutorial anterior, sobre o laço while em JavaScript, fizemos uso de uma expressão:
count = count + 1

Isso quer dizer o seguinte: o novo valor de count vai ser igual ao anterior somado de 1.
Ou seja, se antes count = 1
Depois de : count = count + 1
O valor de count vai ser 2.

Se count=10
E fazemos: count = count + 1
Temos: count = 11

Ou seja, pegamos o valor anterior e adicionamos um.
Podemos abreviar essa expressão:
count = count + 1

Para simplesmente:
count++


O operador ++ é dito de incremento, ele aumenta o valor da variável em uma unidade.

Existe também o operador de decremento: --
Que é o mesmo que fazer: count = count - 1

Ou seja, o novo valor de count é o valor antiga, subtraído de 1.
O código abaixo, por exemplo, faz uma contagem regressiva, de 10 até 1:


HTML:
<!DOCTYPE html>
<html>
 <head>
   <title>Apostila JavaScript Progressivo</title>
   <script type="text/javascript" src="script.js"> </script>
 </head>
 <body>
    <button onclick="contar()">Contar</button><br />
</body>
</html>

JS:
function contar(){
  count = 10;
  while (count>0){
 document.writeln(count+"<br />");
 count--;
  }
}

Operadores de atribuição aritmética: +=, -=, *=, /= e %=

+= e -=
Assim como adicionamos um: count = count + 1
Podemos adicionar outro valor, como 2: count = count + 2

Isso pode ser abreviado para:
count += 1
count += 2

Se quisermos subtrair o valor y de x podemos fazer tanto:
x = x - y
Como: x -= y

O mesmo vale para multiplicação e divisão:
x = x * y
Abreviando: x *= y

Por exemplo, tem um valor em real e quer ter ele em dólar?
Faça: valor = valor / dolar
Ou mais simplificadamente: valor /= dolar
Prontinho, agora o valor está em $.

Usamos o operador % de resto da divisão para saber o resto da divisão por 2.
A abreviação também vale para esse operador.

Se x = 10
E fazemos: x %= 2
Estamos fazendo: x = x%2 = 0

Bem simples, não?
Pode até parecer bobagem e preguiça dos programadores, mas você vai notar que com o tempo isso nos poupa muuuuito tempo, pois usamos demais essas operações matemáticas, mas demais meeeesmo. Além de deixar o código mais clean e menor.

Pré e Pós incremento e decremento

Se fizermos: y++
Você já sabe o que acontece: a variável y se incrementa em uma unidade.

Porém, há uma diferença entre:
x = y++
x = ++y

No primeiro caso, temos um pós-incremento.
Primeiro o valor de y é atribuído a x, só depois a variável y é incrementada.

Vamos supor que inicialmente:
x=10
y=1

Após fazemos: x = y++, temos:
x=1
y=2

No segundo caso, primeiro a variável y é incrementada.
Só depois ela é atribuída a x.

Se inicialmente temos:
x = 10
y = 1 

Fazemos: x = ++y
Primeiro y se incrementa e passa a valer 2
Só depois disso x recebe o novo valor.

Obviamente, o mesmo vale para o decremento.
Não tem mistério nem confusão: se vem primeiro o incremento ou decremento, então a atribuição vai ser em relação novo valor, incrementado ou decrementado.

Se vem primeiro a variável, a atribuição é com esse valor antigo, antes de ser incrementado ou decrementado.

Esses tipos de questões são bem comuns em concursos!

Exercício de Operadores de Atribuição

Inicialmente, x=5, produto = 4, divisao=14
Fazemos duas operações:
1. produto *= x++;
2. divisao /= ++x;

Quando vale cada variável após as  duas operações, realizadas na sequência?

Resposta e solução comentada: na apostila!

3 comentários:

  1. Respostas
    1. Eu instalei o node e fiz ambas as contas utilizando o terminal. O retorno foi esse:
      1) 20
      e
      2) 2

      Mas, fazendo a conta de "cabeça" consegui chegar ao mesmo resultado que você chegou.

      Excluir
    2. Rapaz, eu acho que o produto vale 5 e a divisão 20.
      Se o produto é igual a x++ ele vai receber o valor de x=5. Neste caso o valor de x++ é atribuído ao produto, antes de ser incrementado. No outro caso o incremento ocorre antes da atribuição.

      Excluir