关于闭包
Posted sunmarvell
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于闭包相关的知识,希望对你有一定的参考价值。
闭包是指一个函数,其可以调用另一个函数作用域中的变量;
闭包只能取得包含函数中任何变量的最后一个值,如:
<!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>
以上是关于关于闭包的主要内容,如果未能解决你的问题,请参考以下文章