Skąd funkcja zna wartość tego parametru ?

0

Czytając ten artykuł naktkąłem się na fragment, który zapobiega zbyt częstemu wywoływaniu funkcji w ramach obsług zdarzenia "resize". Chodzi o ten fragment:

const debounce = (func) => {
  let timer
  return (event) => {
    if (timer) { clearTimeout(timer) }
    timer = setTimeout(func, 100, event)
    console.log(event)
  }
}
const canvas = {};

window.addEventListener('resize', debounce(() => {
  canvas.width = window.innerWidth
  canvas.height = window.innerHeight
}))

Czy ktoś może wytłumaczyć:

  1. Po co w linii timer = setTimeout(func, 100, event) ten trzeci parametr **event ** ?
  2. Skąd console.log(event) wie, że ten event to "resize" ?
1
  1. Trzeci, opcjonalny parametr funkcji setTimeout przekazuje parametr do funkcji func.
  2. Console.log wie, bo przekazujesz zdarzenie jako parametr funkcji, która wywołuje tego console.loga.
2

Ad 2:

  1. Obiekt event jest przekazywany do funkcji zwracanej przez funkcję debounce przez parametr funkcji przekazywanej do funkcji addEventListener -> https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#The_event_listener_callback
  2. Obiekt event jest przekazywany do console.log za pomocą argumentu funkcji, w której console.log jest wywoływana (czyli w linii return (event) => { ... }).

Jeśli nie napisałem zrozumiale, pytaj.


UPDATE: Zamieniłem kolejność powyższych punktów, by było bardziej zgodnie z przepływem sterowania w kodzie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1