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)。

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

  • 相关阅读:
    第二次结对编程作业
    第5组 团队展示
    第一次结对编程作业
    BETA 版冲刺前准备(团队)
    项目测评(团队)
    1111111111
    Alpha 事后诸葛亮
    Alpha 冲刺 (10/10)
    Alpha 冲刺 (9/10)
    Alpha 冲刺 (8/10)
  • 原文地址:https://www.cnblogs.com/you000/p/2853675.html
Copyright © 2011-2022 走看看