2
respostas

concatenação de string e cálculo

document.write("A média das idades é" + (20 + 10 + 30)/3);

Porque no código acima a divisão acontece mesmo não estando em um outro parênteses?

Por exemplo, foi dito que string + número, o resultado será texto, logo meu raciocínio foi:

document.write("A média das idades é" + (20 + 10 + 30)/3); A média das idades é 60/3

Mas se estivesse assim:

document.write("A média das idades é" + ((20 + 10 + 30)/3)); A média das idades é (60/3) A média das idades é 20

O JavaScript faria primeiro o cálculo todo porque todas as operações estão entre parênteses, tanto a soma que deve vir primeiro como a divisão que será feita em seguida e então concatenará a string com o resultado.

Porque o JS fez direto o cálculo de divisão?

Obrigado

2 respostas

Oi Jonas, tudo bom? O javascript trabalha com o escopo do primeiro tipo incluído, como você descreveu, só que uma vez iniciado uma operação numérica você faz o javascript temporariamente mudar o switch.

Operações com adição ( + ) e subtração ( - ) não vão funcionar a não ser que estejam entre parenteses, porém, assim como em uma equação, se você adicionar multiplicação ( * ) ou divisão ( / ), ambos ainda vão ser interpretados como se fosse em uma equação, relacionado ao que estiver dentro do parenteses.

Uma vez que você quiser utilizar o divisor como um texto logo após uma operação, nesse caso você terá que adicioná-lo no formato de uma string ( + "/").

Oi Jonas observe como será interpretado o seu cálculo:

document.write("A média das idades é" + (20 + 10 + 30)/3);

"A média das idades é"+(60)/3; "A média das idades é"+20; "A media das idades é 20";

O que não ocasiona nenhum prejuízo para o cálculo pois os parênteses garantiram que o cálculo da soma fosse feito primeiro e depois a divisão.Além disso a divisão tem precedência (vem primeiro) do que a soma e a concatenação. Conforme visto acima.

No segundo caso que você citou temos:

document.write("A média das idades é" + ((20 + 10 + 30)/3));

Entenda que o Javascript sempre considera a precedência dos operadores nesse caso temos os parenteses, como temos parentes envolvendo parenteses, primeiro será calculado o parenteses mais interno ou seja primeiro teremos:

document.write("A média das idades é" + ((20 + 10 + 30)/3)); 
"A média das idades é" + ((20 + 10 + 30)/3));
"A média das idades é" + (60/3));
"A média das idades é" + 20;
"A média das idades é 20";

Espero ter ajudado e bons estudos;