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

NoSQL vs SQL

I am sure most of you all are familiar with SQL database and have worked with MYSQL, Oracle or other SQL databases. And obviousely you must have heard of "NOSQL" as well. So in this blog post we'll see what this NoSQL is and the key differences between NoSQL and SQL. What is "NOSQL"? NOSQL stands for Not Only SQL.It is an approach to database design that can accomodate a wide variety of data models.  NoSQL doesn't have a predefined schema and used for big data and real time web applications. There are several types of database types. 1.Key-Value : Stores data as key value pairs      Ex: Redis, Riak, Memcached 2.Document : Stores data as documents (JSON,BSON,XML)        Ex: MongoDB 3.Column : Stores data in column families as rows have many columns assosiated with.      Ex: Cassendra 4.Graph : Stores entities(nodes) and relationships(edges) between them and represent it in a graph.      Ex: Neo4j Benefits   of NoSQL Basicall

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.

New features of Java 10

Hello all! In this blog post I am gonna tell you about the new features of java 10.I am pretty sure all of you have heard of Java 10! Well, some of you might have dive in to Java 10 as well. Noo? Then this blog post will be a good beginning for you to learn about java 10 and its new exciting features. I am not gonna tell you about all the features but I will be focusing on the features that I found more interesting. 1.Local Variable Type Inference  Java 10 onwards Java also will have the 'var' keyword like JavaScript. This allows you to specify a variable without mentioning the data type of that particular variable but Java compiler will identify the real data type of the variable you declared.And also note that this 'var' keyword can only be used when defining variables inside methods and variables inside blocks.Although Java 10 allows the users to define variables with 'var', that doesn't make Java a dynamically typed language because once the ty