devShark · Rychlé vysvětlení

JavaScript closures srozumitelně

Closure je funkce, která si uchovává přístup k proměnným z lexikálního oboru, ve kterém vznikla, i po dokončení vnější funkce.

Jak to funguje

Každé volání makeCounter vytvoří vlastní vazbu count, takže dvě volání vrácené funkce dají 1 a potom 2, zatímco nový čítač začne znovu od 1; hodí se to, když callback potřebuje pracovat se stavem, který nechceš ukládat do globální proměnné.

function makeCounter() {
  let count = 0;
  return () => ++count;
}
const next = makeCounter();
next(); // 1
next(); // 2
Přečíst dokumentaci

Častý omyl

Closure si uchovává přístup k vazbám, nevytváří zmrazenou kopii každé hodnoty.

Krátké procvičení

1. Může closure přežít vnější volání?

Ano.

2. Slouží closure jen pro soukromý stav?

Ne.

3. Jaký obor zachycuje?

Lexikální obor, ve kterém funkce vznikla.

Procvičit v kvízu

Další témata