Parâmetros de função JavaScript
Um JavaScript function
não realiza nenhuma verificação nos valores dos parâmetros (argumentos).
Parâmetros e argumentos da função
Anteriormente neste tutorial, você aprendeu que as funções podem ter parâmetros :
function functionName(parameter1, parameter2, parameter3) {
// code to be executed
}
Parâmetros de função são os nomes listados na definição de função.
Os argumentos da função são os valores reais passados (e recebidos pela) função.
Regras de parâmetro
As definições de função JavaScript não especificam tipos de dados para parâmetros.
As funções JavaScript não realizam verificação de tipo nos argumentos passados.
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 ausentes (menos do que declarado), os valores ausentes serão definidos como
undefined
.
Às vezes isso é aceitável, mas às vezes é melhor atribuir um valor padrão ao parâmetro:
Exemplo
function myFunction(x, y) {
if (y === undefined) {
y = 2;
}
}
ECMAScript 2015 permite valores de parâmetro padrão na declaração da função:
function myFunction(x, y = 2) {
// function code
}
O objeto de argumentos
As funções JavaScript têm um objeto embutido chamado de objeto de argumentos.
O objeto argument contém uma matriz dos argumentos usados quando a função foi chamada (invocada).
Dessa forma, você pode simplesmente usar uma função para encontrar (por exemplo) o valor mais alto 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;
}
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;
}
Se uma função for chamada com muitos argumentos (mais do que declarados), esses argumentos podem ser alcançados usando o objeto arguments .
Os argumentos são passados por valor
Os parâmetros, em uma chamada de função, são os argumentos da função.
Os argumentos JavaScript são passados por valor : A função só conhece os valores, não as localizações dos argumentos.
Se uma função altera o valor de um argumento, ela não altera o valor original do parâmetro.
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, 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 uma propriedade de objeto, ela altera o valor original.
As alterações nas propriedades do objeto são visíveis (refletidas) fora da função.