总结一下对闭包的理解

闭包:是指有权访问另一个函数作用域中的变量的函数。

在JavaScript中没有块级作用域,是链式作用域结构,子对象会向上一级一级寻找父级的变量。因此在JavaScript中我们需要明白变量的作用域:全局变量和局部变量两种;

JavaScript特殊的一点就是,函数内部可以读取全局变量,而函数外部无法读取函数内部的局部变量。比如:

var a=1;

function a(){

     console.log(n);//1

}

var result=a();

result();//1


function(){

      var b=2;

    console.log(b);//2

}

console.log(b)//error


理解了JavaScript的变量作用域后就很好理解闭包了,闭包就是为了让函数外部可以访问到函数内部的变量,一般闭包的实现方法就是在函数中创建另一个函数;例如:

function a(){

  var n=1;

return function(){

console.log(n);

}

}

var result=a();

result();

使用闭包的好处就是使外部可以访问函数内部的变量,而且闭包会是局部变量始终都在内存中。这样就会带来一些问题,比如内存泄漏。因此在实际开发中应尽量少使用闭包。

你可能感兴趣的:(总结一下对闭包的理解)