zoukankan      html  css  js  c++  java
  • js 闭包理解

    闭包主要应用于两种情况:

    1 函数作为返回值。

    2 函数作为参数传递。

    第一种举例:

    function fn(){

     var max = 10;

     return function bar(){

       if(x > max){

        console.log(x);

       }

     };

    }

    var f1=fn();

    f1(15);

    如上,bar函数作为返回值,赋值给f1。执行f1(15)时,用到了fn作用域下面的max变量的值,然后跨作用域取值。

    var max=10;

       fn=function (x){

        if(x>max){

         console.log(x);

       }

    };

    (function(f){

       var max=100;

       f(15);

    })(fn);

    如上,fn函数作为参数被传递到另一个函数,赋值给f参数,max变量取值为10,不是100。

    例3:

    function fn(){

     var max=0;

     return function bar(x){

       if(x>max){

         console.log(x);

      }

     };

    }

    var f1=fn();

      max=100;

    f1(15);

    在执行到fn()上下文环境后,由于后面执行bar()上下文环境时候需要调用到fn()里面的max,因此,fn()上下文环境并没有马上销毁,而是在bar()执行完成后再销毁。

  • 相关阅读:
    鼠标和滚轮事件
    UI事件
    跨浏览器的事件对象
    DOM中的事件对象和IE事件对象
    Monolog手册参考
    nginx 配置
    es elasticsearch-head安装
    es ik分词插件安装
    yii2.0+es
    php分词工具scws
  • 原文地址:https://www.cnblogs.com/lionisnotkitty/p/5992096.html
Copyright © 2011-2022 走看看