JavaScript functions. Why they are called as first class citizens or functions?

These are the notes taken from the famous javascript course Namaste Javascript. If you are  not getting any point do watch the course. I was creating this for my personal study but later thought that it might also help others.

Let's begin,

Different ways to define a function in javascript:

a)Function statement aka Function Declaration :

function a(){

console.log("a called")


b)Function Expression:

var b=function(){

console.log("b called")


The difference between these 2 types(Function statement and Function Expression) is hoisting.

Function statement can be called above its declaration while in the case of function expression it should be called after declaration else it will throw an error.

c)Anonymous Function:


console.log("b called")


Function without a name and it does not have its own identity as if you run it like this it will give an error. It is used where functions are used as values i.e we can assign them to a variable so that become function expressions.

d)Name Function Expression:

var c=function abc(){

console.log("c called")


It is just like a function expression but it has a function name also.

But if you call abc() then it will give an error.  

Because javascript stores this abc as a variable and not a function.

So it should be called only as c();

Why first-class functions in javascript?

Functions in javascript can be passed as an argument to a function and also function can return function. So the ability to use functions as values so they are called first-class functions in javascript.

For example:

function abc(a){


return function(){

console.log("b called")



function a(){

console.log("a called");


var c=abc(a);


Here we have passed function as an argument.

This function abc returns a function that is stored in variable c.


a called;

c called;

Thanks for reading.



Popular posts from this blog

Node JS:Understanding bin in package.json.

Node.js: create an excel file with multiple tabs.

Node.js: Downloading a xml file from given url and reading its data elements.