קורס Front End למתכנתים שיעור תרגול פונקציות


זהו נושא דיון מלווה לערך המקורי שב־https://www.tocode.co.il/bundles/frontend/lessons/functions-lab

היי , ניסיתי לקרוא לפונקציה אחרת כך:

const foo = function(text){

    panel.innerHTML = text;

}

const writeText = foo;

ועדין לא עובד לי… מה עוד אפשר לעשות?

הי אביב

יודע לתאר מה הבעיה? למה לדעתך הקוד שאני כתבתי בתרגיל לא עובד? ולמה לדעתך הקוד שלך לא עובד?

אני מבין שעצם זה שהפונקציה בeventlistenr עם סוגרים היא תופעל ישר.
אבל אני לא יכול למחוק את הסוגריים כי אני צריך את הפרמטרים שמוזנים שם.
אז חשבתי להגדיר את השם של הפונקציה ללא סוגרים ומתוכה לשמור פונקציה חדשה עם הפעולה שצריכה להיות.

מצאתי סוג של משהו דומה ברשת השתמשתי בזה וזה נראה כך:

function writeText(text) {

  return function(e){

    panel.innerHTML = text;

  }

}

זה עובד אבל לא הבנתי כלכך מה קורה כאן

הי,

כתבת נכון:

אני מבין שעצם זה שהפונקציה בeventlistenr עם סוגרים היא תופעל ישר.
אבל אני לא יכול למחוק את הסוגריים כי אני צריך את הפרמטרים שמוזנים שם.

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