דילוג לתוכן המרכזי
מודול 4 · שיעור 3 מתוך 415/32 בקורס~12 min
שיעורי מודול (3/4)

פרמטרי ברירת מחדל ומנוחה

JavaScript מאפשר לך להפוך פרמטרים אופציונליים (עם ערך ברירת מחדל) וקבל מספר משתנה של ארגומנטים עם האופרטור rest (...).

פרמטרי ברירת מחדל

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

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

ברירת המחדל חלה רק כאשר הארגומנט הוא undefined (כולל המקרה "לא עבר"). עבור null או 0 ברירת המחדל לא מתחילה:

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

מנוחה: ...names

כדי לקבל מספר משתנה של ארגומנטים, אסוף אותם למערך עם ...:

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

בתוך הפונקציה, numeri הוא מערך אמיתי (לא האובייקט הקסום arguments של פונקציות ישנות).

השאר חייב להיות הפרמטר האחרון:

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

מורחים בזמן שיחה

הפנים השניות של ... הוא האופרטור מרחיק, ש"מפוצץ" מערך לארגומנטים נפרדים בזמן שיחה:

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

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

נסה את זה

פעילות גופנית#js.m4.l3.e1
ניסיונות: 0טוען...

הגדר פונקציה `sum(a,b)` כאשר ל-`b` יש ערך ברירת מחדל של 0. היא חייבת לעבור את ההצהרות האלה: sum(5) === 5, sum(2, 3) === 5, sum(0) === 0.

טוען עורך...
הצג רמז

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

הפתרון זמין לאחר 3 ניסיונות

סקירת התרגיל

פעילות גופנית#js.m4.l3.e2
ניסיונות: 0טוען...

הגדר פונקציה `mean(...nums)` שמחזירה את הממוצע האריתמטי של הארגומנטים שלה, או 0 אם אף אחד לא עובר.

טוען עורך...
הצג רמז

אם nums.length הוא 0, החזר 0; אחרת לסכם ולחלק.

הפתרון זמין לאחר 3 ניסיונות