Skąd funkcja zna wartość tego parametru ?

Odpowiedz Nowy wątek
2019-10-09 16:27
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" ?

Pozostało 580 znaków

2019-10-09 16:43
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.

edytowany 1x, ostatnio: Crazy_Rockman, 2019-10-09 16:44

Pozostało 580 znaków

2019-10-09 17:04
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[...]r#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.


edytowany 9x, ostatnio: Silv, 2019-10-09 22:03

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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