闭包题

Posted wood2012

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了闭包题相关的知识,希望对你有一定的参考价值。

 


  **********************************************************************************************************************************


题目:

一般错误答案如下:

1     var li = document.getElementsByTagName(\'li\');
2     for(var i = 0; i < li.length; i++){
3         li[i].addEventListener(\'click\',function(){
4             console.log(\'我是第\' + i + \'个li\');
5         },false);
6     }

结果运行结果为,点击不同的li都显示是5

 

 

正确答案如下:

(用到立即执行函数)

 1 <body>
 2     <ul>
 3         <li>a</li>
 4         <li>a</li>
 5         <li>a</li>
 6         <li>a</li>
 7         <li>a</li>
 8     </ul>
 9 <script type="text/javascript">
10     var li = document.getElementsByTagName(\'li\');
11 
12     var li = document.getElementsByTagName(\'li\');
13     for(var i = 0; i < li.length; i++){
14         (function(j){
15             li[j].addEventListener(\'click\',function(){
16                 console.log(\'我是第\' + j + \'个li\');
17             },false);
18 
19         }(i));
20     }
21 
22 </script>
23 </body>


 

以上是关于闭包题的主要内容,如果未能解决你的问题,请参考以下文章

JS---闭包

js面试题知识点全解(一作用域和闭包)

面试题梳理

js面试题-----作用域与闭包

闭包的特点&&闭包面试题

你不一定能做对的JavaScript闭包面试题