深入浅出讲解Javascript闭包问题+经典面试题

本文深入探讨了JavaScript中的闭包概念,指出闭包本质上是能够访问另一个函数作用域中变量的函数。通过实例解析闭包的作用,即延长变量的作用范围。文章还介绍了闭包在实际应用中的场景,如在面试中常见的利用闭包获取元素索引和延时操作等,并提出了若干思考题以检验读者的理解。
摘要由CSDN通过智能技术生成

什么是闭包

闭包有权访问另一个函数作用域中的变量函数。 —Javascript高级程序设计

在这句话中,要抓住重点:闭包就是函数
简单理解就是:一个作用域可以访问另一个函数内部的局部变量
被访问的这个局部变量所在的函数,就是闭包函数

function fn() {
   
            var num = 10;
            function fun() {
   
                console.log(num);
            }
            fun();
        }
        fn();

在这里插入图片描述
这个断点可以很明白的看出,fn()为闭包函数
代码分析:

num属于fn()函数里面的局部变量,但是fun()可以访问到num这个局部变量,所以这段代码存在闭包现象,并且fn()为闭包函数

闭包的作用

闭包的主要作用:延伸了变量的作用范围
局部变量只有在局部作用域中才可以使用,当这个代码块运行结束后,就会被销毁。闭包的作用就是让局部变量在局部作用域外也可以使用
代码讲解:

//我们fn 外面的作用域可以访问fn内部的局部变量
function fn() {
   
            var num = 10;
            function fun() {
   
                console.log(num);
            }  
            return fun;//返回一个函数
        }
        var f = fn(); //用f来接收这个函数 里面存的是fun函数
        f(); //调用fun函数
        //类似于
        /* var f = function fun() {
            console.log(num);
        } */

这段代码实现了在fn外面的作用域,函数f访问了num变量

闭包应用(含经典面试题)

案例一:点击li输出索引号
方法一:利用动态添加属性的方式

<ul class="nav">
        <li>苹果</li>
        <li>火龙果</li>
        <li>葡萄</li>
        <li>樱桃</li>
    </ul>
    <script>
    var lis = document.querySelector(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值