zoukankan      html  css  js  c++  java
  • 闭包

    之前在学习中,总会遇到一些问题,变量在函数外,或者在函数外的一些情况

    作用域链和活动对象

    1.闭包:有权访问另一个函数作用域中变量的函数

      创建闭包常见的方式:在一个函数内部在创建一个函数,比如内部函数

      在函数外调用了内部函数,并且还调用了内部函数的变量

      结果:1 1 1 1

    每次都new一个内部变量,都加1

     1 function outerFn() {
     2         document.write("外部函数"+"<br/>");
     3         function inner() {
     4             var innerVar = 0;
     5             innerVar++;
     6             document.write("内部函数"+"<br/>");
     7             document.write("内部变量"+"intteVar=" +innerVar+"<br/>");
     8         }
     9        //通过返回内部函数
    10         return inner;
    11     }
    12     //在函数外调用函数
    13     var fnRef = outerFn();
    14     fnRef();
    15     fnRef();
    16     var fnRef2 = outerFn();
    17     fnRef2();
    18     fnRef2();

    全局变量

    内部函数引用全局变量

    结果:1 2 3 4

     1  var i = 0;
     2     function outer() {
     3         document.write("外部函数"+"<br/>");
     4         function inner() {
     5             i++;
     6             document.write("内部函数"+"<br/>");
     7             document.write("全局变量"+"i=" +i+"<br/>");
     8         }
     9         return inner;
    10     }
    11     var  out = outer();
    12     out();
    13     out();
    14     var out2 = outer();
    15     out2();
    16     out2();

     结果:1 2 1 2

     1 function outer() {
     2         var i = 0;
     3         document.write("外部函数"+"<br/>");
     4         function inner() {
     5             i++;
     6             document.write("内部函数"+"<br/>");
     7             document.write("全局变量"+"i=" +i+"<br/>");
     8         }
     9         return inner;
    10     }
    11     var  out = outer();
    12     out();
    13     out();
    14     var out2 = outer();
    15     out2();
    16     out2();

      

  • 相关阅读:
    sss
    sss
    maven tomcat jstl 异常
    第1章 预备知识
    第2章 存储管理
    第8章 虚拟机字节码执行引擎
    第23章 Spring MVC初体验
    第1章 预备知识
    第5章 Java中的锁
    第13章 线程安全与锁优化
  • 原文地址:https://www.cnblogs.com/xingxuexue/p/7574012.html
Copyright © 2011-2022 走看看