Skip to content

AbulBashar38/js-closure-basic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 

Repository files navigation

In simple way explain Javascript Closure

var num1 = 1;
var num2 = 2;

var sum = function(){
    return num1 + num2;
}
console.log(sum())

āφāĻŽāϰāĻž āϝāĻĻāĻŋ āωāĻĒāϰ⧇āϰ āϕ⧋āĻĄ āϗ⧁āϞ⧋ āĻĻ⧇āĻ–āĻŋ āϤāĻžāĻšāϞ⧇ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāĻŦā§‹ āϝ⧇ num1 āĻāĻŦāĻ‚ num2 function āĻāϰ āĻŦāĻžāχāϰ⧇ āφāϛ⧇ āĻ•āĻŋāĻ¨ā§āϤ⧁ āϤāĻžāϰ āĻĒāϰ āĻ“ function āĻāϰ āĻ­āĻŋāϤāϰ āĻĨ⧇āϕ⧇ āφāĻŽāϰāĻž num1 + num2 āϕ⧇ āĻŦā§āϝāĻžāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻ›āĻŋāĨ¤ āφāĻ°ā§āĻĨāĻžā§Ž āφāĻŽāϰāĻž parent āĻāϰ āϜāĻŋāύāĻŋāϏ āϗ⧁āϞāĻžāϕ⧇ child āĻĨ⧇āϕ⧇ excess āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāϏāϞ⧇ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻāχāϟāĻž āϘāĻŸā§‡? āĻāχāϟāĻž āϘāĻŸā§‡ closure āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡āĨ¤ closer parent āĻāϰ āϝ⧇āϏāĻŦ āϜāĻŋāύāĻŋāϏ āϗ⧁āϞāĻž child excess āϚāĻžā§Ÿ āϏ⧇āχ āϜāĻŋāύāĻŋāϏ āϗ⧁āϞāĻžāϰ āĻāĻ•āϟāĻž āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ āύāĻŋāĻœā§‡āϰ āĻ­āĻŋāϤāϰ⧇ āϰāĻžāϖ⧇ āĻāĻŦāĻ‚ child āĻāϰ āĻŽāĻ§ā§āϝ⧇ āϏ⧇āχ reference āϏāĻš āĻāĻ•āϟāĻž āĻ…āĻŦā§āĻœā§‡āĻ•ā§āϟ āϤ⧈āϰāĻŋ āĻšā§Ÿ āĻāĻŦāĻ‚ āĻāχ āĻ…āĻŦā§āĻœā§‡āĻ•ā§āĻŸā§‡āϰ āύāĻžāĻŽ āĻšā§Ÿ closure. āύāĻŋāĻšā§‡āϰ āϕ⧋āĻĄ āϗ⧁āϞ⧋ āϞāĻ•ā§āώ āĻ•āϰāĻŋāĨ¤

var sum = function(){
    var num1 = 1;
    var num2 = 2;
    return function(){
        return num1 + num2;
    }
}
var myFunc = sum();
console.dir(myFunc)

āĻāχ āϕ⧋āĻĄ āϗ⧁āϞ⧋āϰ output āύāĻŋāĻšā§‡āϰ āĻ›āĻŦāĻŋāϤ⧇ āĻĻ⧇āĻ“ā§ŸāĻž āĻšāϞ⧋

simpleOutput

āĻāĻ–āĻžāύ⧇ sum function āφāϰ āĻāĻ•āϟāĻž anonymous function return āĻ•āϰāϛ⧇āĨ¤ āĻāχ anonymous function return āĻ•āϰ⧇ num1 + num2. āĻ•āĻŋāĻ¨ā§āϤ⧁ anonymous function āĻāϰ āĻ­āĻŋāϤāϰ⧇ num1 āφāϰ num2 āύ⧇āχāĨ¤ num1 āφāϰ num2 āφāϛ⧇ āϤāĻžāϰ parent function sum āĻāϰ āĻ­āĻŋāϤāϰ⧇āĨ¤ āĻāĻ–āύ āĻāχ anonymous function āϟāĻž āϤāĻžāϰ parent āĻĨ⧇āϕ⧇ num1 and num2 āĻāϰ āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ āĻāύ⧇ āĻāĻ•āϟāĻž function āϤ⧈āϰāĻŋ āĻ•āϰ⧇ āύāĻŋāĻœā§‡āϰ āĻ•āĻžāϛ⧇ āϰ⧇āϖ⧇ āĻĻā§‡ā§Ÿ āĻāϕ⧇āχ closure āĻŦāϞ⧇āĨ¤ āφāϰ āϏ⧇āχ āϜāĻ¨ā§āϝāχ āφāĻŽāϰāĻž parent āĻāϰ āϜāĻŋāύāĻŋāϏ child āĻ access āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤

Advance Example

function bakeAccount(initialBallance) {
    var ballance = initialBallance;
    return function(){
        return ballance;
    }
}

var account = bakeAccount(100000);
console.dir(account);

āĻāĻ–āĻžāύ⧇ āφāĻŽāϰāĻž ballance āϕ⧇ protected way āϤ⧇ closure āĻĻāĻŋā§Ÿā§‡ access āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻ›āĻŋ āĻ•āĻŋāĻ¨ā§āϤ⧁ āϏāϰāĻžāϏāϰāĻŋ āύāĻžāĻšāĨ¤ āĻ…āĻ°ā§āĻĨāĻžā§Ž āφāĻŽāϰāĻž closure āĻĻāĻŋā§Ÿā§‡ protected way āϤ⧇ āϕ⧋āύ⧋ āĻ•āĻŋāϛ⧁ access āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤

Closure is a function that refer to independent (free) variable.(variable that are used locally but define in enclosing scope).

forLoopClosure āĻāχāĻ–āĻžāύ⧇ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāϰāĻ›āĻŋ āĻĻ⧁āχ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇āχ same code āϞ⧇āĻ–āĻž āĻšā§Ÿā§‡āϛ⧇āĨ¤ āĻ•āĻŋāĻ¨ā§āϤ⧁ let i = 0 āĻāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ var i = 0 āĻĻ⧇āĻ“ā§ŸāĻž āĻšā§Ÿā§‡āϛ⧇āĨ¤ āφāϰ āϤāĻžāχ output āφāϏāϤ⧇ āĻ­āĻŋāĻ¨ā§āύ āϰāĻ•āĻŽāĨ¤ let āĻāϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ output āφāϏāϛ⧇ 0 1 2 āφāϰ var āĻāϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āφāϏāϛ⧇ 3 3 3āĨ¤ āφāϏāϞ⧇ āĻāĻŽāύ āϕ⧇āύ⧋ āφāϏāϞ⧋? āĻāĻŽāύ āφāϏāĻžāϰ āĻ•āĻžāϰāύ āĻšāϞ⧋ āφāĻŽāϰāĻž āϜāĻžāύāĻŋ var = i āĻāĻ•āϟāĻŋ global variable āĻāχāĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ setTimeOut function āϟāĻž āϝ⧇āĻšā§‡āϤ⧁ 3 secound āĻĻ⧇āϰāĻŋāϤ⧇ run āĻ•āϰāϛ⧇ āϏ⧇āĻšā§‡āϤ⧁ loop āϟāĻž āφāϗ⧇ āϚāϞ⧇ i āĻāϰ āĻŽāĻžāύ āĻŦāĻžāϰ āĻŦāĻžāϰ change āĻšāĻšā§āϛ⧇ āĻāĻŦāĻ‚ āϝāĻ–āύ āχ change āĻšāĻšā§āϛ⧇ loop āϟāĻž āĻĻ⧇āĻ–āϛ⧇ āϝ⧇ āĻāχ i āϤ⧋ āϏ⧇āχ āφāϗ⧇āϰ i āϤāĻ–āύ āĻāĻ•āχ i āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ closure āχ āϤ⧈āϰāĻŋ āĻšāĻšā§āϛ⧇ āĻāĻŦāĻ‚ āĻāϰ āĻŽāĻžāύ contenously update āĻšā§Ÿā§‡ 3 āĻšā§Ÿā§‡ āϝāĻžāĻšā§āϛ⧇āĨ¤ āĻāĻŦāĻ‚ 3 secound āĻĒāϰ 3 āϟāĻž 3 print āĻ•āϰāϛ⧇āĨ¤ āĻ•āĻŋāĻ¨ā§āϤ let āĻšāϞ⧋ block scopeāĨ¤ āϤāĻžāχ loop āϚāϞāĻžāϰ āϏāĻŽā§Ÿ āĻĒā§āϰāϤāĻŋāĻŦāĻžāϰ⧇āϰ i āĻāϰ āĻŽāĻžāύ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻž āĻ•āϰ⧇ block scope āϤ⧈āϰāĻŋ āĻšāĻšā§āϛ⧇āĨ¤ āϤāĻžāχ setTimeout āĻāϰ function āϟāĻž āϝāĻ–āύ āϤāĻžāϰ parent āĻāϰ āĻĨ⧇āϕ⧇ i āϕ⧇ access āĻ•āϰāϤ⧇ āϝāĻžā§Ÿ āϤāĻ–āύ āĻĒā§āϰāϤāĻŋāϟāĻž block scope āĻāϰ āϜāĻ¨ā§āϝ different different closure āϤ⧈āϰāĻŋ āĻ•āϰ⧇ i āĻāϰ āĻŽāĻžāύāϰ different different reference āϤāĻžāϰ āĻ­āĻŋāϤāϰ⧇ āϰāĻžāϖ⧇ āϤāĻžāχ āĻĒā§āϰāϤāĻŋāĻŦāĻžāϰ different result print āĻ•āϰ⧇āĨ¤

About

this is the core concept of javascript closure. this is a basic level concept.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published