由于最近在学习关于闭包相关的知识,并且闭包这个知识点让我有点搞不太清楚其具体的定义,所以在网上也查阅了很多大佬的讲解和对闭包的一个定义。

 

最后感觉还是MDN上的说法感觉比较好理解一些,对闭包还是不太理解的道友可以尝试看一看。

MDN上是这样说的:闭包是函数和声明该函数的词法环境的组合

原地址:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Closures

 

在了解闭包的过程中遇到一个很多地方都出现的一个面试题,按照自己的想法想了下发现几乎没对...所以就花了些时间分析了一下,供自己以后忘记了可以回顾一下。

同时,如果这里依旧存在一些误区,希望各位大佬们在评论区帮忙指正,感激万分!

 

原题如下:

复制代码
        function fun(n, o) {             console.log(o);             return {                 fun: function (m) {                     return fun(m, n);                 }             };         }          var a = fun(0); // ?         a.fun(1); // ?         a.fun(2); // ?         a.fun(3); // ?          var b = fun(0).fun(1).fun(2).fun(3); // ?          var c = fun(0