闭包的一则面试题

 

  
  
           
  
  
  1. <ul id="test">    
  2.  
  3.      <li>这是第一条</li>    
  4.  
  5.      <li>这是第二条</li>    
  6.  
  7.      <li>这是第三条</li>    
  8.  
  9. </ul>  

点击每条li节点,弹出单签li节点的下标indexjavascript

 

  
  
           
  
  
  1. <script type="text/javascript">    
  2.  
  3.     lis = document.getElementsByTagName('li');  
  4.       
  5.     for(var i=0; i<lis.length; i++) {  
  6.         lis[i].onclick = function(num) {  
  7.             return function() {  //这里是闭包
  8.                 alert(num);  
  9.             };  
  10.         }(i);  
  11.     }  
  12.  
  13.  </script>  

若是直接写成:java

  
  
           
  
  
  1. <script type="text/javascript">    
  2.  
  3.     lis = document.getElementsByTagName('li');  
  4.       
  5.     for(var i=0; i<lis.length; i++) {  
  6.         lis[i].onclick = function() {  
  7.             return alert(i);  
  8.         };  
  9.     }  
  10.  
  11.  </script>  

那么获取到的i是变量最后的一个值,也就是3.闭包

相关文章
相关标签/搜索