What is a practical use for a closure in JavaScript?
closures, javascript, terminology
Solution
I've used closures to do things like:
a = (function () {
var privatefunction = function () {
alert('hello');
}
return {
publicfunction : function () {
privatefunction();
}
}
})();
As you can see there, `a` is now an object, with a method `publicfunction` ( `a.publicfunction()` ) which calls `privatefunction`, which only exists inside the closure. You can not call `privatefunction` directly (i.e. `a.privatefunction()` ), just `publicfunction()`.
It's a minimal example, but maybe you can see uses to it? We used this to enforce public/private methods.
Problem
I'm trying my hardest to wrap my head around JavaScript closures. I get that by returning an inner function, it will have access to any variable defined in its immediate parent. Where would this be useful to me? Perhaps I haven't quite got my head around it yet. Most of the examples I have seen online don't provide any real world code, just vague examples. Can someone show me a real world use of a closure? Is this one, for example? ``` var warnUser = function (msg) { var calledCount = 0; return function() { calledCount++; alert(msg + '\nYou have been warned ' + calledCount + ' times.'); }; }; var warnForTamper = warnUser('You can not tamper with our HTML.'); warnForTamper(); warnForTamper(); ```