JS闭包?

先说,我没怎么学过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].οnclick=function()
		{
			alert(i);
		}
	}
</script>
为什么点击之后输出全是5。

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

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

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

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


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

也不知道对不对,网上的闭包概念实在看不懂,谁有好的给我推荐下,或讲解下,让小弟长点姿势!万谢!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值