Skip to main content

Overview of the JavaScript Closures


   Today I am gonna give you all an introduction to JavaScript closures, an important concept that every programmer should be familiar with. According to MDN,
 "Closures are functions that refer to independent (free) variables. In other words, the function defined in the closure 'remembers' the environment in which it was created." 
It uses lexical scoping, meaning that the function will be executed with the scope in which it was defined rather than the scope in which it was invoked.
   To make the concept clear let’s take an example. Assume we need to keep track of the number of times a button is clicked on a certain web page. So the below piece of code will do it.





   If you run the above code, it’s perfectly fine and gives the number of clicks on the button as we expected. But the problem with this approach is, here the variable ‘count’ is a global variable. So any script on the page can access and change the value of it. To avoid that we can make ‘count’ a local variable by initializing it inside our function.




   The modified code will avoid the variable from getting modified unnecessarily but with the modification we’ll not be able to track the click count as the variable ‘count’ is initialized inside the function.So whenever the function is called, it resets the value of count to zero and then increments it by one. Therefore no matter how many times you click, the click count will never go beyond one.

A closure would be the perfect solution for this kind of a problem.  



   Whenever we click on the button, the outer function is called and it will return the inner function. Here it is important to know that the outer function will get executed only once. The inner function can access the variable ‘count’, and will increment it by one whenever the button is clicked.Therefore by using a closure we can avoid the variable 'count' being accessed unnecessarily while recording the number of clicks on the button. That's it!!!
   This is just an simple example of how and where we can use closures.If you are keen on learning more about JavaScript closures, you can dive in with the tutorials available on the internet.



Comments

Popular posts from this blog

Getting started with Spring Boot

In this blog post I am gonna give you all an introduction on Spring Boot, an application framework and inversion controller for the java platform. Before diving in to Spring Boot framework, let's get a brief idea about the Spring framework on top of which the Spring Boot was created. Spring is a very popular application framework for java web and enterprise and web applications which was initially written by Rod Johnson.Millions and millions of people around the world use this to make their codes high performing, easily testable and reusable.Spring framework is build on top of the Dependency Injection (DI) concept. What is Dependency Injection? When it comes to a complex java application, the classes should not be depending on one another, in order to reuse our code and to make the unit testing easy.For such situations, dependency injection is used to connect the classes together while making them independent.So what exactly happens here? Let's think of Dependency in...

Getting started with React js

In this blog post, I'm gonna explain you all about React js, a javascript technology that is used to create interactive single page applications.

Noob introduction to Node.js

In this blog post I am gonna give you all a brief idea about Node.js. Earlier JavaScript was purely used for client side scripting, and it was embedded to a html page.But the node js developers use it for server side scripting(to produce the content of dynamic web pages before sending it to the user.) Node.js is an open source, cross platform run-time environment that executes JavaScript code server side. Why node.js? Node.js uses asynchronous programming. When a file request comes a ASP/PHP file would, Send the task to the computer's file system. Wait for the system to open and read the file. Sends the respond back to the client Get ready to handle the next task. But as node.js is using asynchronous programming, it would handle the request in a different manner.It would, Send the task to the computer's file system. Handles the next coming task. Returns the respond of the first task to the client when the system has completed it. In brief it reduces wa...