Skąd funkcja zna wartość tego parametru ?

Odpowiedz Nowy wątek
2019-10-09 16:27

Rejestracja: 1 rok temu

Ostatnio: 3 dni temu

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

Rejestracja: 1 rok temu

Ostatnio: 3 godziny temu

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

Rejestracja: 5 lat temu

Ostatnio: 3 tygodnie temu

Lokalizacja: Warszawa

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

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