zoukankan      html  css  js  c++  java
  • 闭包

    //1.

    var data = [];
    
    for(var i = 0; i < 3; i++) {
      data[i] = function() {
      console.log(i);
      };
    }
    
    data[0]();
    data[1]();
    data[2]();

    //答案都是3,因为函数执行的时候,循环已经结束了,这时找i找到的是全局变量i,为3

    globalContext = {
        VO: {
            data: [...],
            i: 3
        }
    }
    data[0] Context = {
      Scope: [AO, globalContext.VO]
    }

    //2.

    var data = [];
    
    for(var i = 0; i < 3; i++) {
        data[i] = (function(i) {
            return function() {
                console.log(i);
            }
        })(i);
    }
    
    data[0]();
    data[1]();
    data[2]();

    //这时,因为是闭包,他会保存引用的变量,没有被销毁,所以是1,2,3,当然全局的i还是3,但是在匿名函数里已经找到i了,不会再往上寻找

    data[0]Context = {
        Scope: [AO, 匿名函数Context.AO globalContext.VO]
    }


    好记性不如烂笔头,看到自己觉得应该记录的知识点,结合自己的理解进行记录,用于以后回顾。
  • 相关阅读:
    阿里云Centos 8.2安装LNMP环境
    TP6中缓存的使用
    TP6中命令行
    TP6中请求和响应
    TP6模型操作
    TP6中数据库操作
    TP6中验证器的使用
    TP6如何使用文件上传
    3. Longest Substring Without Repeating Characters
    1. Two Sum
  • 原文地址:https://www.cnblogs.com/wangxi01/p/8393859.html
Copyright © 2011-2022 走看看