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.