מרחשוון

גמישות מגניבה בפונקציות JS

ב-JS יש משהו מאד מגניב. כשיוצרים פונקציה מגדירים אילו משתנים היא אמורה לקבל, אבל בקריאה לפונקציה לא חייבים לשלוח את כל המשתנים. אפשר לא לשלוח את האחרון, או את השניים האחרונים, ובלבד שהמשתנים שכן נשלחים שומרים על הסדר, וללא דילוגים.
למשל:

function foo (arg1, arg2, arg3)
{
// do something
}

הקריאות הבאות לפונקציה הן חוקיות:

foo (arg1);
foo (arg1, arg2);
foo (arg1, arg2, arg3);

אבל דבר שגיליתי רק היום, הוא שאפשר לעשות גם הפוך: לא רק שניתן לשלוח פחות משתנים לפונקציה, אפשר גם לשלוח לה יותר משתנים. אז תגידו: סבבה, ממש נפלא ש-JS לא כועס אם שולחים לו יותר משתנים. אבל מה תעשי איתם? איך תפני אליהם?
אהה! אז מסתבר שלכל פונקציה יש שדה בשם arguments, שהוא אוסף כל המשתנים שנשלחו לפונקציה. הפניה למשתנה נעשית ע”י אינדקס של מערך (arguments[index]), למרות ש-arguments אינו מערך.
במאמר הזה מבית SitePoint מתואר בפירוט מה אפשר לעשות עם arguments. אני לא אביא כאן תמצית, כי אלה דברים שקשה להסביר, והמאמר עושה זאת מצוין. רק אומר שממש כדאי לקרוא, כי זה מגניב לגמרי!

2 תגובות על “גמישות מגניבה בפונקציות JS

  1. שוב(חידשת,לי,3,נדב,פרצוף-שמח)

    פונקציה שוב (כותרת, עוד-כותרת, מספר חידושים, שם המחבר, רגש)

    {

    \ הצגת כל המשתנים בצורה מצחיקה על המסך

    הזעקה(כותרת, עוד-כותרת, מספר חידושים, שם המחבר, רגש);

    }

    הזעקה( “נדב”)

כתבו תגובה ליהו Cancel reply

כתובת הדוא"ל שלכם לא תוצג.