在我们js开发过程中,都会遇到递归、闭包。但是官网解释太深奥了,不利于我们的理解。
1.闭包
什么是闭包。我们先来看下下面的代码
function a(){ var n = 0; function b() { console.log(n++); } b(); b(); } a(); //控制台输出0,再输出1
下面再来看下面一段代码
function a(){ var n = 0; this.b = function () { console.log(n++); }; } var c = new a(); c.b(); //控制台输出0 c.b(); //控制台输出1
什么是闭包?这就是闭包!
有权访问另一个函数作用域内变量的函数都是闭包。这里 b 函数访问了构造函数 a 里面的变量 n,所以形成了一个闭包。