JS闭包与JS函数

先说说在网上看到的一个闭包案例:

var add = (function () {
var counter = 0;
return function () {return counter += 1;}
})();
function myFunction(){
document.getElementById("demo").innerHTML = add();
}

这个案例代码综合度较高,再加上闭包,简直不要太懵逼!

整理了下,将以上代码等效于下列代码:

var add = (function () {
var counter = 0;
return function () {return counter += 1;}
});
var m=add();     //m===function () {return counter += 1;},m此时等同于函数
function myFunction(){
document.getElementById("demo").innerHTML = m();    //m()===return count+=1,m()值的是函数m的运行结果,即返回的counter值
}

这么转换后,瞬间就看懂了!其实所谓的闭包就是函数中的函数~

原文地址:https://www.cnblogs.com/failte/p/9873758.html