JS闭包?
2016-04-26 09:49
435 查看
先说,我没怎么学过JS只是之前给网站做特效的时候用jQuery顺带学了点基本语法。
有人问我这个问题
按照c++的理解,加上网上找的闭包的概念我强行解释下。对不对再说(至少我现在觉得是对的)。
这个写法,应该是在界面加载的时候便调用Script中的内容。
考虑到闭包的定义,即函数中的成员在没有被回收之前均留在内存中,也就是说i是留在内存中的。而我们的alert调用都是调用的内存中的i,因此输出都是5。
这个类似传值还是传引用的问题。
也不知道对不对,网上的闭包概念实在看不懂,谁有好的给我推荐下,或讲解下,让小弟长点姿势!万谢!
有人问我这个问题
<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。
这个类似传值还是传引用的问题。
也不知道对不对,网上的闭包概念实在看不懂,谁有好的给我推荐下,或讲解下,让小弟长点姿势!万谢!
相关文章推荐
- js window.open打开新窗口 参数
- 用js下载文件
- 钉钉客户端JS-API权限签名算法.NET版
- JS调用Activity方法时,方法里的overridePendingTransition 不起作用
- JS如何获取页面可见区域高度
- JSON学习笔记
- jstat:虚拟机统计信息监视工具
- 初探 js对象与数组
- Extjs 4.0.7 中模式窗口的CURD
- [Angular 2] Managing State in RxJS with StartWith and Scan
- 我对js原型链的理解
- JS跨域调用之document.domain--相同基础域名页面之间的调用
- Javascript的replace函数以及PHP中的str_replace()函数
- javaScript基础
- [置顶] javascript入门基础小案例-----按键盘的方向键来控制块的移动z注释:
- JS字符串与对象互相转换
- JSON格式化
- rails提供跳转js的ajax实例分析特殊情况
- JavaScript事件处理的方式(三种)
- js 求时间差的实现代码