您的位置:首页 > Web前端 > JavaScript

JS闭包?

2016-04-26 09:49 435 查看
先说,我没怎么学过JS只是之前给网站做特效的时候用jQuery顺带学了点基本语法。

有人问我这个问题

<ul id="List">
<li>1</li>

<li>2</li>

<li>3</li>

<li>4</li>

<li>5</li>

</ul>
<script>
var list_obj=document.getElementsByTagName('li');
for(var i=0; i<=list_obj.length;i++)
{
list_obj[i].onclick=function()
{
alert(i);
}
}
</script>
为什么点击之后输出全是5。

按照c++的理解,加上网上找的闭包的概念我强行解释下。对不对再说(至少我现在觉得是对的)。

list_obj[i].onclick=function()
按照c++的理解,这句话其实等于把function的函数指针挂在onclick上。

这个写法,应该是在界面加载的时候便调用Script中的内容。

考虑到闭包的定义,即函数中的成员在没有被回收之前均留在内存中,也就是说i是留在内存中的。而我们的alert调用都是调用的内存中的i,因此输出都是5。



这个类似传值还是传引用的问题。

也不知道对不对,网上的闭包概念实在看不懂,谁有好的给我推荐下,或讲解下,让小弟长点姿势!万谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: