閉包的一則面試題

 

  
  
           
  
  
  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.閉包

相關文章
相關標籤/搜索