之前花了很多时间看书上对闭包的介绍,也看了很多人的写的关于闭包的博客,然后我就以为自己懂了。

结果,下午在一个QQ群里,有人问了这道经典的闭包问题,如下图:

经典闭包例子详解

我告诉他去看书上的闭包介绍。告诉他之后,我想我自己要不也写一下,反正花不了多少时间,结果花了好久怎么写也不对..............

后来看了看书上的,然后自己总结了下,觉得这次应该懂了。下次还不理解我就可以去跳楼了............

-----------------------------------分割线-----------------------------------分割线--------------------------

首先我们来了解几个概念:

立即执行函数:形如 (function(){})();的一类函数;

闭包:闭包是指有权访问另一函数作用域中的变量的函数。

作用域链:当代码执行的时候,会创建变量对象的一个作用域链....(具体百度)

我们再来看这个问题,我重新写了一个,源码如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>闭包经典例子详解——huansky</title>
</head>
<body>
    <div id="ttt">
        <p >000000000000000000</p>
            <br>
        <p >111111111111111111</p>
        <br>
        <p >222222222222222222</p>
    </div>
</body>
<script>

    var dom=document.getElementsByTagName("p");
    for(var i=0;i<dom.length;i++){
        dom[i].onclick=function(){    
            console.log(i);//3
        };
    }
    
</script>
</html>
View Code

相关文章:

  • 2021-06-10
  • 2022-12-23
  • 2023-03-15
  • 2021-07-19
  • 2022-12-23
  • 2022-12-23
  • 2021-06-06
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-29
  • 2021-09-02
  • 2021-06-14
  • 2021-11-20
相关资源
相似解决方案