JavaScript 闭包
一、闭包
1. 如何从外部读取局部变量(闭包):
在一个函数内部,再定义一个函数:
第一步:定义一个普通函数f1();
第二步:在f1中定义一个普通函数f2();
第三步:在f1中返回f2(在f1中返回f2的引用)
第四步:执行f1,把f1的返回结果复制给变量c;
第五步:执行c();
函数A的内部函数B被函数A以外的一个变量C引用
Function f1(){
Var n=99;
Function f2(){
Alert(n);
}
Return f2;
}
Var result =f1();
Result();//99外部可以访问局部变量
2. 闭包:当一个内部函数被其他函数之外的变量引用的时候,就形成了闭包。
3. 闭包的特性:
1) 函数嵌套函数
2) 函数内部可以引用外部的参数和变量
3) 参数和变量不会被垃圾回收机制回收
4. 闭包的用途:
1) 可以直接读取函数内部定义的变量
2) 让这些变量的值始终存在内存中
5. 注意:
1) 问题1:闭包会使函数中的变量都被保存在内存中,内存消耗大,所以不能滥用,否则会导致网页的性能问题,内存泄漏
解决方案:在退出函数的时候,将不使用的局部变量全部删除
2) 问题2:闭包会在复函数外部,改变复函数内部的变量值,如果把复函数当做对象使用,把闭包当做公用方法(public),内部变量相当于私有属性(privatevalue)
---------不能随便改变复函数内部变量的值。
JavaScript 闭包相关推荐
- Javascript闭包和闭包的几种写法及用途
好久没有写博客了,过了一个十一长假都变懒了,今天总算是恢复状态了.好了,进入正题,今天来说一说javascript里面的闭包吧!本篇博客主要讲一些实用的东西,主要将闭包的写法.用法和用途. 一.什么 ...
- JavaScript学习总结(十六)——Javascript闭包(Closure)
闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现.很早就接触过闭包这个概念了,但是一直糊里糊涂的,没有能够弄明白JavaScript的闭包到底是什 ...
- 全面理解Javascript闭包和闭包的几种写法及用途【转】
一.什么是闭包和闭包的几种写法和用法 1.什么是闭包 闭包,官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分.闭包的特点: 1. ...
- 全面理解Javascript闭包和闭包的几种写法及用途
一.什么是闭包和闭包的几种写法和用法 1.什么是闭包 闭包,官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分.闭包的特点: 1. ...
- JavaScript闭包如何工作?
您将如何向了解其闭包概念(例如函数,变量等)的人解释JavaScript闭包,但却不了解闭包本身? 我已经在Wikipedia上看到了Scheme示例 ,但是不幸的是它没有帮助. #1楼 我知道已经有 ...
- 让你分分钟理解 JavaScript 闭包
原文:https://www.cnblogs.com/onepixel/p/5062456.html 让你分分钟理解 JavaScript 闭包 闭包,是 Javascript 比较重要的一个概念,对 ...
- 全面理解Javascript闭包和闭包的几种写法及用途--转载自https://www.cnblogs.com/yunfeifei/p/4019504.html...
全面理解Javascript闭包和闭包的几种写法及用途 好久没有写博客了,过了一个十一长假都变懒了,今天总算是恢复状态了.好了,进入正题,今天来说一说javascript里面的闭包吧!本篇博客主要讲一 ...
- [转载]深入理解JavaScript闭包(closure)
最近在网上查阅了不少Javascript闭包(closure)相关的资料,写的大多是非常的学术和专业.对于初学者来说别说理解闭包了,就连文字叙述都很难看懂.撰写此文的目的就是用最通俗的文字揭开Java ...
- [转]Javascript 闭包
[转]Javascript 闭包 简介 Closure 所谓"闭包",指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分. 闭 ...
- JavaScript 闭包的详细分享(三种创建方式)(附小实例)
JavaScript闭包的详细理解 一.原理:闭包函数--指有权访问私有函数里面的变量和对象还有方法等:通俗的讲就是突破私有函数的作用域,让函数外面能够使用函数里面的变量及方法. 1.第一种创建方式 ...
最新文章
- Acwing--单调栈
- numpy使用np.set_printoptions函数抑制numpy数组输出结果使用科学计数法进行显示(suppressing scientific notation in numpy array)
- 设置cisco登录时显示的警示性信息-banner
- 设计模式之三 装饰模式
- 是否可能有一台算力无穷大的计算机?
- container_of 和 offsetof 宏详解
- Linux /usr/bin与/usr/local/bin区别
- php停车场计时收费软件,城市街道停车计时收费系统 路边停车收费软件
- UML建模—EA创建Class(类图)
- 软件工程综合实践专题——个人博客作业1
- java通过HTTPS协议POST提交接收JSON格式数据
- Redis中的键值过期操作
- python语言中包含的标准数据类型_Python标准数据类型
- Python学习之路3 - 字符串操作字典
- 【第二周】结对编程体会
- java replace三个参数_javascript replace()第二个参数为函数时的参数用法
- 国内五大主流网站内容抓取工具/采集软件大盘点
- IOUtils快速进行内容复制与常用方法
- 「捷径」解读:iOS 自动化的 3.0 时代
- 第二人生的源码分析(十四)人物角色的实现