zoukankan      html  css  js  c++  java
  • JS--闭包的使用场景

    根据闭包保存变量的特性,可以有以下的使用场景。

    setTimeout的回调函数传参

    function f1(a){
       return function(){
          console.log(a)
       }
    }
    
    var fun = f1(10)
    setTimeout(fun, 1000)
    

    防抖

    function debounce(fn,delay){
        let timer = null
        //借助闭包
        return function() {
            if(timer){
                clearTimeout(timer) //进入该分支语句,说明当前正在一个计时过程中,并且又触发了相同事件。所以要取消当前的计时,重新开始计时
                timer = setTimeOut(fn,delay) 
            }else{
                timer = setTimeOut(fn,delay) // 进入该分支说明当前并没有在计时,那么就开始一个计时
            }
        }
    }
    

    计数器

       var sum = 0;
        var obj = {
           inc:function () {
               sum++;
               return sum;
           }
    };
        return obj;
    }
    let result = f1();
    console.log(result.inc());//1
    console.log(result.inc());//2
    console.log(result.inc());//3
    
  • 相关阅读:
    r语言
    pickle模块
    mongodb简介
    oracle
    mysql
    ceph
    迭代器
    python类
    encode&decode
    PHP 截取字符串中某两个字符(串)之间的字符串 考虑多个的情况
  • 原文地址:https://www.cnblogs.com/ashen1999/p/13890452.html
Copyright © 2011-2022 走看看