分析js闭包引起的大事注册问题_.docx

上传人:PIYPING 文档编号:11655542 上传时间:2021-08-28 格式:DOCX 页数:4 大小:12.42KB
返回 下载 相关 举报
分析js闭包引起的大事注册问题_.docx_第1页
第1页 / 共4页
分析js闭包引起的大事注册问题_.docx_第2页
第2页 / 共4页
分析js闭包引起的大事注册问题_.docx_第3页
第3页 / 共4页
分析js闭包引起的大事注册问题_.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《分析js闭包引起的大事注册问题_.docx》由会员分享,可在线阅读,更多相关《分析js闭包引起的大事注册问题_.docx(4页珍藏版)》请在三一文库上搜索。

1、分析js闭包引起的大事注册问题_ 这篇文章主要为大家分析了js闭包引起的大事注册问题,感爱好的小伙伴们可以参考一下 背景:闲暇时间看了几篇关于js作用域链与闭包的文章,偶然又看到了之前遇到的一个问题,就是在for循环中为dom节点注册大事驱动,具体见下面代码: !DOCTYPE html html head titlejs闭包/title meta charset=utf-8 / /head body button id=anchor11/button button id=anchor22/button button id=anchor33/button script type=text/ja

2、vascript src=jquery-1.12.1.js/script script type=text/javascript function pageLoad() for (var i = 1; i =3; i+) var anchor = document.getElementById(anchor + i); anchor.onclick = function () console.log(anchor+i); window.onload = pageLoad; /script /body /html 根据正常的想法,结果应当是点击3个按钮分别提示“anchor1”、“anchor2

3、”、“anchor3”;期初我也是这么认为的,但是结果却是不管点击哪个按钮,都会提示“anchor4”。 这是为什么呢?不要焦急,待我们慢慢分析,这里面包含js作用域链与闭包的学问,在这里我就不具体介绍了。 首先我们看这个anchor.onclick,这是什么?这是dom0级大事处理程序啊,废话,我也知道,博主是蛇精病吗*不要吵了,我想说的是这个anchor.onclick 是一个大事处理程序的声明,就像var name=小明一样,这是声明白,但是还没有执行,这就是关键,我们将上面的js代码修改一下再来看看: function pageLoad() for (var i = 1; i =3;

4、i+) var anchor = document.getElementById(anchor + i); anchor.onclick = function () console.log(anchor+i); if(i=2) debugger;/我们在这里debugger一下,然后在掌握台手动触发#anchor1和#anchor2的点击大事 window.onload = pageLoad; 看到了吧,我们通过debugger让循环在i=2时停止,然后又去掌握台手动触发#anchor1和#anchor2的点击大事,结果掌握台打印“anchor2”。 完全的规律大致是这样的:anchor.onclick始终保存着i的引用,i在循环中是始终改变的,从i=1到i=4;虽然在循环的过程中,anchor.onclick曾经保存过(留意“曾经”两字), 1,2,3这三种状况,但是i最终变成了4,所以说,无论点击哪个按钮,都会输出“anchor4” 以上就是本文的全部内容,盼望对大家的学习有所关心。 .

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1