闭包

// 函数a

function a(){

  var i = 0;

  // 函数b

  function b(){

    alert( i++ );

  }

  return b;

}

//函数c

var c = a();

c();

代码中函数a的内部函数b,被函数a外面的一个变量c引用的时候,就创造了一个闭包

闭包的优点:

  方便调用上下文的局部变量,加强封装性,保护变量

闭包的缺点:

  常驻内存,使用不当会导致内存泄漏。

  由上面的例子可以看出,闭包之所以占用资源是因为当函数a执行结束后,变量i并没有因为函数a的结束而得到释放,因为c的执行需要依赖i。

posted @ 2018-04-10 15:35  ben妞妞  阅读(108)  评论(0编辑  收藏  举报