码迷,mamicode.com
首页 > 其他好文 > 详细

关于闭包

时间:2018-05-07 19:43:16      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:body   函数   onclick   闭包   click   tag   pre   ext   function   

闭包是指一个函数,其可以调用另一个函数作用域中的变量;

闭包只能取得包含函数中任何变量的最后一个值,如:

<!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
        <ul>
             <li>click me</li>
             <li>click me</li>
             <li>click me</li>
              <li>click me</li>
        </ul>
        <script type="text/javascript">
                var elements=document.getElementsByTagName(li);
                var length=elements.length;
                 for(var i=0;i<length;i++){
                         elements[i].onclick=function(){
                        alert(i);
                        }
                    }
   
    </script>
    </body>
    </html>

因为闭包,点击每一个,弹出的结果都为4;

可以通过创建另一个匿名函数,强制让闭包的行为符合预期。

 1     <!DOCTYPE html>
 2     <html lang="en">
 3     <head>
 4         <meta charset="UTF-8">
 5         <title>Document</title>
 6     </head>
 7     <body>
 8         <ul>
 9              <li>click me</li>
10              <li>click me</li>
11              <li>click me</li>
12               <li>click me</li>
13         </ul>
14         <script type="text/javascript">
15                 var elements=document.getElementsByTagName(li);
16                 var length=elements.length;
17                  for(var i=0;i<length;i++){
18                          elements[i].onclick=function(num){
19                       return  function(){
20                              alert(num);
21                        }
22                            
23                         }(i)
24                     } 
25     </script>
26     </body>
27     </html>

 

关于闭包

标签:body   函数   onclick   闭包   click   tag   pre   ext   function   

原文地址:https://www.cnblogs.com/sunmarvell/p/9003942.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!