• 闭包


    1.定义:有权访问另一个函数作用域中的变量的函数。

    2.原理:不管在任何位置,只要函数执行了,必然可以拿到定义作用域中的变量。

    3.特点:

    ①占内存;
    ②低版本浏览器中内存泄漏;
    ③可以在全局修改局部的数据。
    4.作用:
    ①可以在函数的外部访问到函数内部的局部变量;
    ②让这些变量始终保存在内存中,不会随着函数的结束而自动销毁。
    5.写法:通过作用域的嵌套实现,让局部变量,进化成私有变量的环境
    6.应用场景:
    ①事件委托的封装:
    var aBox = document.querySelectorAll("#box");
         document.onclick = eveEnt(aBox,function(){})
         function eveEnt(child,cb){
             return function(eve){
                 var e = eve || window.event;
                var tar = e.target || e.srcElement;
                 console.log(tar);
                 for(var i = 0;i<child.length;i++){
                     if(child[i] === tar){
                         cb.bind(tar)();
                     }
                 }
    
             }
         }

    ②循环中绑定事件,在事件内使用循环每次的计数器:

     for (let i = 0; i < ali.length; i++) {
            
            ali[i].onclick = function () {           
                    console.log(i);
                }
       
    }

    ③可以给计时器的回调函数传参:

    setTimeout(fn("123"),1000)
    function fn(a){
        return function(){
            console.log(a);
        }
    }

    ④模块化开发:将功能作为模块操作,每个模块都是独立的,通过专用入口,进行功能的调用

    var obj = (function(){
        "user strict";
        var url1 = "...1";
        var url2 = "...2";
        var url3 = "...3";
        function ajax(){
            console.log(url1);
        }
        function jsonp(){
            console.log(url2);
        }
        function cookie(){
            console.log(url3);
        }
        return {
            ajax:ajax,
            jsonp:jsonp,
            cookie:cookie
        }
    })();
    obj.ajax();
    obj.jsonp();
    obj.cookie();
  • 相关阅读:
    Collection<E>接口
    Iterable<T>接口
    Iterator<E>接口
    js图片压缩
    js计算最大公约数和最小公倍数
    canvas原生js写的贪吃蛇
    左右两栏div布局,高度自适应
    vue的图片路径,和背景图片路径打包后错误解决
    职责链模式
    js多个异步请求,按顺序执行next
  • 原文地址:https://www.cnblogs.com/yh-3175339026/p/13027693.html
Copyright © 2020-2023  润新知