Domknięcia (closures) w JavaScript

< button id="click"> < /button> 
< script src="script.js"> < /script> 

var count = "2000";
var button = document.getElementById("click").addEventListener("click", onclick);
var clickedme = click();
function click(){
	var count = "1";
	function addcount() {
		console.log(window.count);
		return count++
	}
	return addcount;
}
function onclick() {
	console.log(clickedme());
}

0

W powyższym przykładzie pomimo, że istnieje zewnętrzna (globalna) zmienna count nie wpływa ona w żaden sposób na nasz licznik. Żeby się do niej odwołać z wnętrza funkcji click() należy odwołać się do obiektu window [np. console.log(window.count)]. Dwie zmienne o tych samych nazwach mogą funkcjonować obok siebie nie przeszkadzając sobie wzajemnie. istnieje możliwość sprawdzenia wewnątrz funkcji ile razy został kliknięty i po którymś kliknięciu wywołać inny kod.

domknięcia (closures)

Powyższy przykład jest wyjątkowy jeszcze z jednego powodu. Stanowi on dobry przykład prywatności w JavaScrypcie (Revealing module pattern). Jednak szerzej na ten temat napiszę w osobnym wpisie.

Kontynuując przeglądanie strony, wyrażasz zgodę na używanie przez nas plików cookies. dowiedz się więcej

Aby zapewnić Tobie najwyższy poziom realizacji usługi, opcje ciasteczek na tej stronie są ustawione na "zezwalaj na pliki cookies". Kontynuując przeglądanie strony bez zmiany ustawień lub klikając przycisk "Akceptuję" zgadzasz się na ich wykorzystanie.

Zamknij