Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

闭包

1. 闭包

  • 闭包
    • Closure
    • 有各种复杂的定义
    • 但我们不管定义,只需要记住闭包出现的时机
      • 内层作用域 访问它外层函数作用域的 变量/函数时,闭包就出现了

闭包的强大作用

var func = function (src) {
  var img = new Image();
  img.src = src;
};
func("http://www.xxx.com");

这里 img 有可能会在调用后被回收,导致还没能对 src 发出 http 请求

可以用闭包来解决,把 img 保存起来

var func = (function () {
  var imgs = [];
  return function (src) {
    var img = new Image();
    imgs.push(img);
    img.src = src;
  };
})();
func("http://www.xxx.com");