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

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

  • 相关阅读:
    git
    读后感
    总结
    封装,策略,Asp换脸
    典型用户
    第四次作业
    第三次作业
    计算
    感悟
    对git的认识
  • 原文地址:https://www.cnblogs.com/you000/p/2853675.html
Copyright © 2011-2022 走看看