博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS闭包
阅读量:5338 次
发布时间:2019-06-15

本文共 619 字,大约阅读时间需要 2 分钟。

闭包是,就是引用不是在自己作用域内的变量。

函数a执行结束时应该销毁其中的局部变量a变量,但子函数b调用了父函数a的变量,导致变量a一直为函数b保存在内存中以供函数b引用;

function a(){  var a= 0;  return function (){    var b = 1;    return a+b;  }}

 

举例说明:

for(var i=0 ; i < 10; i++){  $(document).on("click",function(){    alert(i)  }) } 

以上当点击document时,循环弹出10;因为循环绑定点击事件调用的 变量 i 并不是循环的自增的 i 的实际的值,而是指向 i 的引用;点击事件并不是立即执行的,因此click事件执行时,for循环已经结束,引用的 i 值 为10,想要取到循环中的变量i可以用立即执行函数,这时点击事件中 i 不在指向父函数作用域下的 i  而是指向自执行函数传入的函数内部的参数 。如下;

for(var i=0 ; i < 10; i++){  (function savei(i){    $(document).on("click", function(){      alert(i);    });  })(i)}

  

转载于:https://www.cnblogs.com/xiaomingSun/p/6782100.html

你可能感兴趣的文章
跟随大神实现简单的Vue框架
查看>>
Linux目录结构
查看>>
LeetCode-Strobogrammatic Number
查看>>
luoguP3414 SAC#1 - 组合数
查看>>
五一 DAY 4
查看>>
(转)接口测试用例设计(详细干货)
查看>>
【译】SSH隧道:本地和远程端口转发
查看>>
win8.1安装Python提示缺失api-ms-win-crt-runtime-l1-1-0.dll问题
查看>>
图片点击轮播(三)-----2017-04-05
查看>>
判断两个字符串是否相等【JAVA】
查看>>
直播技术细节3
查看>>
《分布式服务架构:原理、设计于实战》总结
查看>>
java中new一个对象和对象=null有什么区别
查看>>
字母和数字键的键码值(keyCode)
查看>>
协议和代理
查看>>
IE8调用window.open导出EXCEL文件题目
查看>>
sql server 2008 不允许保存更改,您所做的更改要求删除并重新创建以下表 的解决办法(转)...
查看>>
[转]iOS学习笔记(2)--Xcode6.1创建仅xib文件无storyboard的hello world应用
查看>>
Spring mvc初学
查看>>
python标准库学习7
查看>>