Olá, estava com a mesma dúvida e sua resposta me ajudou. Então resolvi testar e acabei em dúvida de novo.
De fato quando a operação é de soma (e vc não força o parseInt() ) ele faz a concatenação dos números, e quando é multiplicação ou divisão ele realiza o calculo.
Porém eu resolvi misturar os dois (soma e multiplicação), e o resultado me deixou confuso.
function geraConcatenacao(num1, num2){
return (num1 + num2) *2;
}
function geraResultado(num1, num2){
return (num1 * num2) +2;
}
var num1 = prompt("Digite um número");
var num2 = prompt("Digite outro número");
mostra("Concatenando fica " + geraConcatenacao(num1, num2));
mostra("O resultado é " + geraResultado(num1, num2));
Escolhendo os números 3** e **4 no meu programa o resultado foi o seguinte:
"Concatenando fica 68"
"O resultado é 14"
Ou seja, na geraConcatenacao() ele primeiro concatenou 3 e 4, depois multiplicou por 2.
E na geraResultado() ele primeiro multiplicou 3 e 4, mas depois ele não concatenou com o 2, ele realmente somou.
Afinal quando é que ele adivinha quando é número e quando não é?
Isso me deixou meio confuso...
Se alguém puder me esclarecer sobre isso agradeço!