閉包的一則面試題

 

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

點擊每條li節點,彈出單籤li節點的下標index

 

  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>  

如果直接寫成:

  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.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章