闭包(js的问题)

闭包的概念Closure:作用域

引用了自由变量的函数,这个被引用的自由变量将和这个函数一同存在;

即使已经离开了创造它的环境也不例外。

所以,闭包是由函数和其他相关的引用环境组合而成,实现信息驻留;

信息的保存,引用在,空间不销毁

简单的使用

var Person = function () {
  var count = 0;
  return function () {
    return count++;
  };
};

var p = Person()
console.log(p()); // 0
console.log(p()); // 1
console.log(p()); // 2

闭包的应用

var buttons = [{name: 'n1'}, {name: 'n2'}, {name: 'n3'}]

function bind() {
  for (var i = 0; i < buttons.length; i++) {
    // 定义一个立即执行函数,行成闭包
    (function (num) {
      buttons[i].func = function () {
        console.log(num);
      };
    })(i);
  }
}

bind();

buttons[0].func(); // 0
buttons[1].func(); // 1
buttons[2].func(); // 2

闭包缺点:

闭包导致内存驻留,如果是大量对象的闭包环境需要注意内存消耗

ES6中使用let定义局部变量也可以实现输出0 1 2

function bind() {
  for (let i = 0; i < buttons.length; i++) {
    buttons[i].func = function () {
      console.log(i);
    };
  }
}

相关推荐

  1. js问题

    2024-01-05 11:14:01       36 阅读
  2. Vue js

    2024-01-05 11:14:01       12 阅读
  3. 记一个导致内存泄漏问题

    2024-01-05 11:14:01       11 阅读
  4. Go理解

    2024-01-05 11:14:01       28 阅读
  5. react陷阱

    2024-01-05 11:14:01       15 阅读
  6. Js面试之作用域与

    2024-01-05 11:14:01       35 阅读
  7. 前端理论总结(js)——和内存泄漏

    2024-01-05 11:14:01       20 阅读
  8. python中应用

    2024-01-05 11:14:01       33 阅读
  9. iOS 和Block区别

    2024-01-05 11:14:01       42 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-05 11:14:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-05 11:14:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-05 11:14:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-05 11:14:01       20 阅读

热门阅读

  1. 如何获取泛型T的真实类型

    2024-01-05 11:14:01       40 阅读
  2. 对mongodb说hello会得到什么

    2024-01-05 11:14:01       41 阅读
  3. MongoDB聚合:$facet

    2024-01-05 11:14:01       37 阅读
  4. stream流做的那些事

    2024-01-05 11:14:01       36 阅读
  5. 【taro react】 ---- QRCode 二维码生成

    2024-01-05 11:14:01       39 阅读
  6. 30分钟也能“玩转” K8s?新手必看!

    2024-01-05 11:14:01       29 阅读
  7. 1.4 力扣回溯题

    2024-01-05 11:14:01       39 阅读
  8. Hadoop的启动停止命令详解

    2024-01-05 11:14:01       37 阅读