zoukankan      html  css  js  c++  java
  • JavaScript 闭包生命周期

    var checker ;
         function myFunc(){
            if(checker){
                checker();
            }
            alert("do myFunc:"+str);//alert_A
            var str = "test.";
            if(!checker){
                checker = function(){
                    alert("do Check:"+str);//alert_B
                }
            }
            //装函数实例自身的一个引用返回
            alert(this == myFunc.callee);
            return this;
         }
         myFunc()();
         //输出:
         //1. do myFunc: undefined  -->由alert_A输出,因为str使用后定义,所为结果:undefined
        //2. do myFunc: test.      -->由alert_B输出,str是由第一个方法调用产生的闭包数据
         //3. do myFunc: undefined  -->由alert_A输出。

    A.JavaScript中函数实例可能拥有多个闭包。
    B.实例与闭包的生存周期是分别管理的。
    C.函数被调用时总是初始化一个闭包,该闭包是否被销毁,取决于它是否有被(其它闭包)引用的变量/数据(如上面:str)。

    函数执行时创建闭包>>执行中闭包没有被其它对象引用>>函数执行结束闭包被销毁。

  • 相关阅读:
    构建之法读书笔记04
    团队冲刺06
    12.23——周总
    团队冲刺05
    团队冲刺04
    用户场景分析
    团队冲刺03
    返回一个二维数组中最大联通子数组的和
    团队冲刺02
    FFT/NTT基础题总结
  • 原文地址:https://www.cnblogs.com/you000/p/2853675.html
Copyright © 2011-2022 走看看