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();

      

  • 相关阅读:
    java跳过构造方法新建对象
    java实现类似qq的窗口对聊
    NoSql的产生
    C语言跳出循环
    C语言for循环
    C语言while语句
    C语言条件运算符
    C语言switch语句
    C语言逻辑运算符
    C语言关系运算符
  • 原文地址:https://www.cnblogs.com/xingxuexue/p/7574012.html
Copyright © 2011-2022 走看看