1
resposta

Por que isso acontece? As demais operações são realizadas (-*/) e a posição da string no inicio ou no fim vai definir se a operação vai ser feita ou não.

O número ao lado da string realiza a operação normalmente, que não seja soma. Então quer dizer que não transforma em texto, apenas que não tem operação para ser realizada ("18" + 20), então apenas imprime um texto e um número. A operação "18" + 20 - 10 apresenta resultado da subtração. No entanto, se a string vir no começo a operação não é feita "18" + 20 + 10, mas se vir no final, a soma é realizada 20 + 10 + "18".

<script>
<script>
    document.write(" A idade de Fernanda é");
    document.write("<br>");
    document.write(" Imprime a string e realiza a operação");
    document.write("18" + 20 - 10);
    document.write("<br>");
    document.write("18" + 20/2);
    document.write("<br>");
    document.write("18" + 20*10)
    document.write("<br>");
    document.write(" Realiza a operação e imprime a string");
    document.write( 20 + 5 + "18");
    document.write("<br>");
    document.write(" Imprime a string e imprime o numero sem realizar operação");
 document.write( "18" + 20 );
    document.write( "18" + 20 + 5);
    document.write("<br>");

</script>
1 resposta

Olá Fernanda, beleza?

Então o que acontece é o seguinte.. Quando nós usamos uma "Junção" de string com números, o javascript vai pegar a sua definição e concatenar tudo em um bloco de string, vou tentar ilustrar pra vc:

    document.write(" Imprime a string e realiza a operação");
    document.write("18" + 20 - 10);

Primeiro ele irá exibir o valor 18 na tela, pois o mesmo é uma string, então não existe uma operação lógica para isso,

Logo em seguida temos o operador lógico "+", no enteando esse operador quando usamos na frente de um trecho string, teremos uma outra funcionalidade para ele, no caso a concatenação de 2 trechos.

É exatamente isso que acontece no seu exemplo, ao invez de somar com o resultado da sua subtração, ele apenas irá concatenar os valores.

O que ilustra o resultado "1810"

se vc quiser realmente realizar uma operação matemática é necessário converter o valor da String para valor numérico, por exemplo :

document.write(parseInt("18") + 20 - 10);
// Resultado: 28

usamos uma função de conversão para um número inteiro, então "18" deixa de ser uma string e passa a ser o número 18, dando outra funcionalidade para o operador "+", a funcionalidade de operação matemática.

Completando um pouco mais a resposta, note o seguinte exemplo:

document.write("18" * 20 - 10);
// Resultado 350

Então o JS quando usamos outro operador matemático sem ser o "+", nós da uma "forcinha", fazendo por traz essa conversão e realizando a operação matemática.

no caso, 18 * 20 = 360 - 10 = 350.