闭包:

1、一个函数嵌套另一个函数

2、内层函数调用外层函数的变量

3、内层函数作为返回值返回给外层函数

闭包代码:

        function num(){
            let i = 0
            return function getNum(){ //内层函数作为返回值返回给外层函数
                return ++i //内层函数调用外层函数的变量
            }
        }
        let n = num()
        console.log(n())//1
        console.log(n())//2
        console.log(n())//3

优点:防止变量全局污染,调用数据更加方便

缺点:耗内存,因为每次使用闭包函数都会生成一个独立的,不被销毁的执行空间,存储它的私有变量

闭包案例:

点击每个li都会打印出它对应的下标

js代码:

    const list = document.querySelectorAll('ul li')
    for(let i = 0;i<list.length;i++){
        list[i].onclick = ((index)=>{
            return ()=>{
                console.log(index)
            }
        })(i)
    }

版权声明:本文为zlf1914原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/zlf1914/p/13064638.html