JavaScript的闭包

今天我想总结一下最近学的关于闭包的知识

闭包函数是函数的一种高级应用方式,通过建立一个不被销毁的存储空间来在函数的外部调用和使用函数内部的数据。

1.定义闭包函数

  • 定义一个函数a,返回值是一个函数b
  • 在返回值函数b中使用函数a定义的局部作用域变量
  • 在函数a的外部引用函数a,并且执行返回值函数b

2.闭包函数的特点

  • 既是优点也是缺点
    ①函数作用域空间不会被销毁
    优点:空间中的内容永远存在
    缺点:占用大量的内存空间
    ②可以从外部访问函数内部的变量
    优点:使用变量数据方便
    缺点:容易泄露数据信息
    ③保护私有作用域变量
    优点:确保私有作用于变量一直存在
    缺点:占用内存空间
  • 闭包函数的最大问题
    可能造成占用大量的内存空间,降低程序的执行效率,甚至可能造成数据溢出或者是数据泄露;所以为了保护数据的安全性,特殊情况下才使用闭包。

3.闭包函数的应用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <ul>
        <li>我是第一个li</li>
        <li>我是第二个li</li>
        <li>我是第三个li</li>
        <li>我是第四个li</li>
    </ul>
    <script>
        let oLis = document.querySelectorAll('li');
        for(var i = 0 ; i <= oLis.length-1 ; i++){
            // 闭包的形式
            // 会保留执行空间,也就是保留每次生成的i的数值
            // 执行点击事件时,可以执行到对应的i的数值
            oLis[i].addEventListener('click' , (function(a){
                return function(){
                    console.log(a);
                }
            })(i+1) )         
        }       
    </script>
</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值