Parâmetros de função JavaScript


Índice

    Mostrar índice


Uma função JavaScript não executa nenhuma verificação valores de parâmetros (argumentos).


Parâmetros e argumentos de função

Anteriormente neste tutorial, você aprendeu que funções podem ter parâmetros:

function functionName(parameter1, parameter2, parameter3) {
    // code to be executed
}

Os parâmetros de função são os nomes listados em a definição da função.

Os argumentos da função são os valores reais passado para (e recebido por) a função.


Regras de parâmetros

As definições de função JavaScript não especificam tipos de dados para parâmetros.

Funções JavaScript não realizam verificação de tipo no passado argumentos.

As funções JavaScript não verificam o número de argumentos recebidos.


Parâmetros padrão

Se uma função for chamada com argumentos faltantes (menos que o declarado), os valores faltantes serão definidos como indefinido.

Às vezes isso é aceitável, mas às vezes é melhor atribuir um padrão valor para o parâmetro:

Exemplo

function myFunction(x, y) {
    if (y === undefined) {
    y = 2;
     }

}

Experimente você mesmo →

<!DOCTYPE html>
<html>
<body>

<p>Setting a default value to a function parameter.</p>
<p id="demo"></p>

<script>
function myFunction(x, y) {
  if (y === undefined) {
    y = 2;
  }  
  return x * y;
}
document.getElementById("demo").innerHTML = myFunction(4);
</script>

</body>
</html>



Valores de parâmetro padrão

ES6 permite que os parâmetros de função tenham valores padrão.

Exemplo

Se y não for aprovado ou indefinido, então y=10.

function myFunction(x, y = 10) {	  return x + y;
}
myFunction(5);

Experimente você mesmo →

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Functions</h1>
<h2>Default Parameter Values</h2>
<p>If y is not passed or undefined, then y = 10:</p>

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

<script>
function myFunction(x, y = 10) {
  return x + y;
}
document.getElementById("demo").innerHTML = myFunction(5);
</script>

</body>
</html>

Parâmetro de descanso da função

O parâmetro rest (...) permite que uma função trate um número indefinido de argumentos como um array:

Exemplo

function sum(...args) {
  let sum = 0;
  for (let arg of args) sum += arg;
  return sum;
}

let x = sum(4, 9, 16, 25, 29, 100, 66, 77);

Experimente você mesmo →

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Functions</h1>
<h2>The Rest Parameter</h2>

<p>The rest parameter (...) allows a function to treat an indefinite number of arguments as an array:</p>

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

<script>
function sum(...args) {
  let sum = 0;
  for (let arg of args) sum += arg;
  return sum;
}

let x = sum(4, 9, 16, 25, 29, 100, 66, 77);

document.getElementById("demo").innerHTML = x;
</script>

</body>
</html>


O objeto Argumentos

As funções JavaScript têm um objeto integrado chamado argumentos objeto.

O objeto de argumento contém uma matriz dos argumentos usados quando a função foi chamado (invocado).

Desta forma, você pode simplesmente usar uma função para encontrar (por exemplo) o valor mais alto valor em uma lista de números:

Exemplo

x = findMax(1, 123, 500, 115, 44, 88);
function findMax() {
  let max = -Infinity;
    for (let i = 0; i < arguments.length; i++) {
      if (arguments[i] > max) {
      max = arguments[i];
      }
    }
    return max;
}

Experimente você mesmo →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Functions</h2>
<p>Finding the largest number.</p>
<p id="demo"></p>

<script>
function findMax() {
  let max = -Infinity;
  for(let i = 0; i < arguments.length; i++) {
    if (arguments[i] > max) {
      max = arguments[i];
    }
  }
  return max;
} 
document.getElementById("demo").innerHTML = findMax(4, 5, 6);
</script>

</body>
</html>


Ou crie uma função para somar todos os valores de entrada:

Exemplo

x = sumAll(1, 123, 500, 115, 44, 88);

function sumAll() {
  let sum = 0;
    for (let i = 0; i < arguments.length; i++) {
    sum += arguments[i];
    }
    return sum;
}

Experimente você mesmo →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Functions</h2>
<p>Sum of all arguments:</p>
<p id="demo"></p>

<script>
function sumAll() {
  let sum = 0;
  for(let i = 0; i < arguments.length; i++) {
    sum += arguments[i];
  }
  return sum;
}
document.getElementById("demo").innerHTML = sumAll(1, 123, 500, 115, 44, 88);
</script>

</body>
</html>

Se uma função for chamada com muitos argumentos (mais do que o declarado), esses argumentos podem ser alcançados usando o objeto de argumentos.


Argumentos são passados por valor

Os parâmetros, em uma chamada de função, são os argumentos da função.

Argumentos JavaScript são passados por valor: somente a função conhece os valores, não a localização do argumento.

Se uma função altera o valor de um argumento, ela não altera o valor do parâmetro valor original.

As alterações nos argumentos não são visíveis (refletidas) fora da função.


Objetos são passados por referência

Em JavaScript, as referências de objetos são valores.

Por causa disso, os objetos se comportarão como se fossem passados por referência:

Se uma função altera a propriedade de um objeto, ela altera o valor original.

As alterações nas propriedades do objeto são visíveis (refletidas) fora da função.