Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Duvida] Concatenação JavaScript

Boa noite pessoal, estou com uma duvida a respeito de Concatenação no JavaScript, eu percebi que ao utilizarmos a "," obtemos o mesmo resultado do "+" ao escrever um texto.

ex

var numero = 2;
        document.write("oi ", numero);
var numero = 2;
        document.write("oi " + numero);

Porem como nos exercícios utilizamos a função mostra no lugar do document.write não consigo obter o mesmo resultado, a utilização da virgula resulta em um erro no programa onde somente o primeiro termo é exibido

ex

<meta charset="UTF-8">

<script>

    function pulaLinha() {
        document.write("<br>");
    }

    function mostra(frase) {

        document.write(frase);
        pulaLinha();
    }

    var multiplicador = 1;
    var numero = parseInt(prompt("Digite um numero para ver a tabuada do mesmo"));

    while (multiplicador <=10){
        mostra(numero , " * " , multiplicador , " = " , numero * multiplicador, "<br>");
        multiplicador ++;
    }
</script>

Nesse caso recebo como output apenas o numero 5 escrito 10 vezes

Porem quando troco a virgula para +.

  while (multiplicador <=10){
        mostra(numero + " * " + multiplicador + " = " + numero * multiplicador + "<br>");
        multiplicador ++;
    }

O código fica correto.

Alguem sabe me dizer o porque disso ?

A "," e o "+" possuem o mesmo significado ? Os dois estão realizando concatenação?

2 respostas

A função mostra só recebe um argumento, diferente da função write que fica em document :). É por isso que vc não consegue vários argumentos. O +, no meio de uma string, é o operador de concatenação.. e ele não tem nada a ver com a virgula não :).

solução!

Beleza Gustavo?

Eles não possuem o mesmo significado. Apenas o operador + realiza concatenação, a vírgula é utilizada para separar declaração de variáveis, parâmetros e etc.

Quando você chama o seu método mostra() usando o +, você está passando uma argumento que é o resultado da concatenação. Quando você chama o método mostra() usando a vírgula você está passando vários argumentos mas no seu método dá declarado apenas um parâmetor, então o restante é descartado

No caso do document.write(), você passou vários argumentos para que ele concatenasse. Neste link tem a descrição do método. https://www.w3schools.com/jsref/met_doc_write.asp

Espero ter ajudado!