Salt la conținutul principal
Modulul 4 · Lecția 3 din 415/32 în curs~12 min
Lecții din modul (3/4)

Parametrii impliciti și de repaus

JavaScript vă permite să faceți parametri opțional (cu o valoare implicită) și acceptați un număr variabil de argumente cu operatorul rest (...).

Parametrii impliciti

JS
function saluta(nome, prefisso = 'Ciao') {
  return `${prefisso}, ${nome}!`;
}

saluta('Anna'); // 'Ciao, Anna!'
saluta('Marco', 'Buongiorno'); // 'Buongiorno, Marco!'

Valoarea implicită se aplică numai atunci când argumentul este undefined (inclusiv cazul „nefiecut”). Pentru null sau 0, implicit nu se activează:

JS
function f(x = 10) {
  return x;
}
f(); // 10
f(undefined); // 10
f(null); // null
f(0); // 0

Rest: ...names

Pentru a accepta un număr variabil de argumente, colectați-le într-o matrice cu ...:

JS
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); // 10

În interiorul funcției, numeri este o matrice reală (nu obiectul magic arguments al funcțiilor vechi).

Restul trebuie să fie ultimul parametru:

JS
function f(primo, ...altri) {
  /* ok */
}
// function f(...altri, ultimo) {} // SyntaxError

Răspândire la ora apelului

Cealaltă față a ... este operatorul spread, care „explodează” o matrice în argumente separate în timpul apelului:

JS
function somma(a, b, c) {
  return a + b + c;
}

const nums = [1, 2, 3];
somma(...nums); // 6, equivalent to somma(1, 2, 3)

Încearcă

Exercițiu#js.m4.l3.e1
Încercări: 0Se încarcă…

Definiți o funcție `sum(a, b)` unde `b` are o valoare implicită de 0. Trebuie să treacă aceste afirmații: sum(5) === 5, sum(2, 3) === 5, sum(0) === 0.

Se încarcă editorul...
Afișează indiciu

function sum(a, b = 0) { return a + b; }

Soluție disponibilă după 3 încercări

Exercițiu de revizuire

Exercițiu#js.m4.l3.e2
Încercări: 0Se încarcă…

Definiți o funcție `mean(...nums)` care returnează media aritmetică a argumentelor sale, sau 0 dacă nu este trecut niciunul.

Se încarcă editorul...
Afișează indiciu

Dacă nums.length este 0, returnează 0; în caz contrar însumează și împarte.

Soluție disponibilă după 3 încercări