Lecciones del módulo (3/4)
Parámetros por defecto y rest
JavaScript te permite hacer que los parámetros sean opcionales (con un valor por
defecto) y aceptar un número variable de argumentos con el operador rest (...).
Parámetros por defecto
function saluta(nome, prefisso = 'Ciao') {
return `${prefisso}, ${nome}!`;
}
saluta('Anna'); // 'Ciao, Anna!'
saluta('Marco', 'Buongiorno'); // 'Buongiorno, Marco!'El valor por defecto solo se aplica cuando el argumento es undefined (incluido el caso
de "no pasado"). Para null o 0 el valor por defecto no se activa:
function f(x = 10) {
return x;
}
f(); // 10
f(undefined); // 10
f(null); // null
f(0); // 0Rest: ...nomi
Para aceptar un número variable de argumentos, recógelos en un array con ...:
function somma(...numeri) {
let totale = 0;
for (const n of numeri) totale += n;
return totale;
}
somma(); // 0
somma(5); // 5
somma(1, 2, 3, 4); // 10Dentro de la función, numeri es un array real (no el objeto mágico arguments de las
funciones antiguas).
El rest debe ser el último parámetro:
function f(primo, ...altri) {
/* ok */
}
// function f(...altri, ultimo) {} // SyntaxErrorSpread en la llamada
La otra cara de ... es el operador spread, que "descompone" un array en argumentos
separados en el momento de la llamada:
function somma(a, b, c) {
return a + b + c;
}
const nums = [1, 2, 3];
somma(...nums); // 6, equivalente a somma(1, 2, 3)Pruébalo tú mismo
Define una función `sum(a, b)` donde `b` tenga un valor por defecto de 0. Debe pasar las aserciones: sum(5) === 5, sum(2, 3) === 5, sum(0) === 0.
Mostrar pista
function sum(a, b = 0) { return a + b; }
Solución disponible después de 3 intentos
Ejercicio de repaso
Define una función `mean(...nums)` que devuelva la media aritmética de sus argumentos, o 0 si no se le pasa ninguno.
Mostrar pista
Si nums.length es 0, return 0; de lo contrario, suma y divide.
Solución disponible después de 3 intentos