首页 > 其他分享 >闭包

闭包

时间:2023-01-28 15:33:42浏览次数:35  
标签:闭包 函数 作用域 li var 变量

1.闭包(closure)指有权访问另一个函数作用域中变量的函数

一个函数作用域可以访问另一个函数局部变量,延长变量的作用范围

// 1.闭包(closure)指有权访问另一个函数作用域中变量的函数
            // 一个函数作用域可以访问另一个函数局部变量
            function fn(){
                var num=10;
                function fun(){
                    console.log(num)
                }
                fun()
            }
            fn()

2.利用闭包打印当前小li的索引号

核心思路:利用一个小闭包,立即执行函数,将需要的变量当参数传进去,立即执行函数里面的所有函数都可以使用这个变量

<body>
        <ul>
            <li>苹果</li>
            <li>香蕉</li>
            <li>梨</li>
        </ul>
        <script>
            // // 1.动态获取当前小li的索引号
            // var lis=document.querySelector('ul').querySelectorAll('li')
            // for(var i=0;i<lis.length;i++){
            //     lis[i].index=i
            //     lis[i].onclick=function(){
            //         console.log(this.index)
            //     }
            // }
            
            // 2.使用闭包的方式获取当前小li的索引号,可能会导致内存泄露
            var lis=document.querySelector('ul').querySelectorAll('li')
            for(var i=0;i<lis.length;i++){
                (function(i){
                    lis[i].onclick=function(){
                        console.log(i)
                    }
                })(i)
            }
        </script>
    </body>

 

标签:闭包,函数,作用域,li,var,变量
From: https://www.cnblogs.com/hs20011205/p/17070388.html

相关文章

  • Day16 -闭包和装饰器
    1.闭包介绍和基本语法1.函数产生嵌套(外函数中定义一个内函数)2.内函数使用外函数定的局部变量3.外函数返回内函数的引用(函数名)闭包的介绍我们前面已经学过了......
  • 什么是闭包?
    目录引入闭包发现问题用汇编的来解释闭包引入闭包不知道什么是闭包,推荐去看看这个视频:【python技巧060】形象理解闭包,玩转闭包https://www.bilibili.com/video/BV1Vx......
  • 5week-6闭包
    packagemainimport"fmt"//理解闭包1funcadder(xint)func(int)int{//定义1个函数,没有参数,返回值是一个函数 returnfunc(yint)int{//返回1个函数,并且参......
  • JavaScript学习笔记—闭包
    1.定义闭包就是能访问到外部函数作用域中变量的函数2.什么时候使用当需要隐藏一些不希望被别人访问的内容时就可以使用闭包3.构成要件(1)函数的嵌套(2)内部函数要引用......
  • 函数对象与闭包
    目录函数对象global与nonlocal函数可以被引用函数可以作为容器类型的元素函数可以作为参数传入另外一个函数函数的返回值可以是一个函数闭包函数闭与包闭包的用......
  • 12.函数式语言特性:迭代器与闭包
    一、闭包:能够捕获环境的匿名函数Rust中的闭包是一种可以存入变量或作为参数传递给其他函数的匿名函数。你在可以在一个地方创建闭包,然后在不同的上下文环境中调用该闭包来......
  • C# 中的闭包一个小问题
    usingSystem;varfuns=newAction[10];for(vari=0;i<10;i++)funs[i]=()=>Console.WriteLine(i);foreach(varfninfuns)fn();猜测这段......
  • 闭包 闭包的使用场景
    一、是什么一个函数和对其周围状态(lexicalenvironment,词法环境)的引用捆绑在一起(或者说函数被引用包围),这样的组合就是闭包(closure)也就是说,闭包让你可以在一个内层函数中......
  • Python闭包和装饰器的学习
    之前看了不少的帖子,总是看了这篇帖子说的理解了,换篇帖子说的又不理解了,把人弄晕了,究其原因还是因为没有把底层原理理解。这两个概念总是放在一起说,两者之间肯定是有关系的......
  • 闭包的应用
    关于闭包由于在JavaScript语言中,只有函数内部的子函数才能读取局部变量,闭包就是能够读取其他函数内部变量的函数。所以本质上,闭包就是将函数内部和函数外部链接起来的一座......