Friday 27 October 2017

What is a practical use for a closure in JavaScript?

itemprop="text">

I'm href="http://jsbin.com/ojuxo/edit" rel="noreferrer">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 href="http://blog.morrisjohns.com/javascript_closures_for_dummies.html"
rel="noreferrer">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();


Answer




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().



Its a
minimal example but maybe you can see uses to it? We used this to enforce public/private
methods.


No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...