Javascript função com parâmetros?

Estou declarando uma função no código JavaScript :

<p id="demo"></p>
<script>

function myfunction(p1,p2)
{
    return p1 * p2;
    document.getElementById("demo").innerHTML = myfunction(300,300);
}

eu não entendi travei nessa parte?

DEMO 1

Eu não sei bem o que está te travando, mas, o código em si está errado deveria ser:

<p id="demo"></p>
<script>

function myfunction(p1,p2)
{
    // valores inteiros  
    return parseInt(p1) * parseInt(p2); // ou
    //valores númericos com virgulas
    //return parseFloat(p1) * parseFloat(p2); 
}
document.getElementById("demo").innerHTML = myfunction(300,300);

Porque: em uma função o return significa a saída dessa função, então no seu código ele saia e não executava a próxima linha que era document ....

DEMO 1


Outra forma (eu não recomendo essa forma, porque, acaba limitando a função há apenas um item na tela, mas, fica como exemplo) :

DEMO 2

<p id="demo"></p>
function myfunction(p1,p2)
{
    document
            .getElementById("demo")
            .innerHTML = parseInt(p1) * parseInt(p2); 
}
myfunction(300,300);

DEMO 2

Eu não entendi, tipo um parâmetro é uma variável local, o que ele representa?

Quando eu cria um parâmetro dentro de função ele se relaciona com valor que eu re-declarar no valor de uma função?

Exemplo

function mufuntion(p1 , p2)
{
     p1 * p2 
    myfunction(300,500);
}

Um paramento dessa função é um variável local da função, aonde suas mudanças só ocorreram dentro do escopo da função, exemplo:

var item = 10;

function myfunction(p1)
{
     p1 = p1 + 5;
    alert(p1);
}

myfunction(item);

alert(item);

dentro da função o valor de 10 vai ser 15 pela adição de 5, e no segundo código (alert(item)) vai mostrar 10;, sendo assim a mudança só vai ocorrer dentro do escopo da função e ele representa um valor qualquer, no caso de javascript é dinâmico.

A segunda resposta está relacionado com a primeira que eu já expliquei logo acima, ao criar uma variável dentro da função, pode alterar o valor dentro da função somente. No caso acima do seu exemplo gerará um loop infinito ocasionando erros e travamentos do seu código, porque, o mesmo não ter fim. Realmente eu não entendi a segunda pergunta!

1 curtida

Obrigado.

no caso, quando declarou um parâmetro dentro da função , não precisa da palavra chave ’ var ’ ?
por que é considerado uma variável local da função.

Se você colocar ou não nesse caso especifico não muda nada! pode colocar o var que vai ficar somente dentro do escopo da função

Leia essa resposta por favor vai clarear bastante para você