谈谈我对闭包知识的深刻理解
来源:互联网 发布:合肥网络诈骗 编辑:程序博客网 时间:2024/05/01 12:05
在javascript中闭包应该是最难理解的一部分内容。在我看来闭包就是和作用域之间的联系。
1、首先我们来了解一下javascript中的作用域知识。
javascript中的作用域其实就指的函数作用域,因为只有函数在javascript中才能形成区域范围。而函数作用域有一下特点。
1.1 函数能访问到外部的变量。案例一:
var num = 123; function fn() { console.log(num);//输出的值为123 } fn();
1.2 函数内的变量不能被外部访问到。案例二:
function fn(){ var num=123; } console.log(num)//输出值:num is not undefined说明函数内部的变量是不能被外边访问的。
2、下面就该说闭包了
从上面案例二我可以知道函数会形成一个封闭的区域,对其中的变量起到保护作用,使函数外边无法访问。
闭包:从字面意思来理解就是封闭和包裹,换句话说,就是在函数内部定义的变量,在函数的外部无法访问到,因此就说函数构成了一个闭包。
说白了闭包是作用域的应用。
计算机科学中对闭包的定义为:一个函数的函数体以及函数所处的环境,构成的一个综合体叫做:闭包
函数体:就是函数内部的代码。
函数所处的环境:指的就是作用域。
是不是觉得计算机科学中对闭包的定义是不是很难理解。
3、使用闭包来解决什么样的问题?
我使用闭包来解决如何访问函数内部变量的问题。 下面我写个史上最简单的闭包。
function foo() { var num = 123; function fn() { return num;// } return fn; } var m=foo(); var f=m(); console.log(f);//输出的值为123,这样就可以访问到函数内部变量num。 原理就是利用闭包:在函数foo中嵌套了一个函数fn,利用函数fn可以访问到其外部的变量,而获取函数foo中的变量num,当外部调用函数foo()时候, 函数foo中 return返回fn函数的实体,然后我再对函数fn进行调用就在外部访问到函数内部变量num了。就是利用内部函数的闭包特性把函数foo中的变量取到外边, 说白了内部函数就相当于一个媒介,就是一个桥梁连接函数内部和外部。这就是闭包作用。
0 0
- 谈谈我对闭包知识的深刻理解
- 谈谈你对闭包的理解
- 深刻理解闭包
- JavaScript进阶:谈谈对闭包的理解
- 对于闭包的深刻理解
- 谈谈我对计算机体系结构的理解
- 谈谈我对BS模式的理解
- 谈谈我对敏捷的理解
- 谈谈我对DI的理解
- 谈谈我对DI的理解
- 谈谈我对CSS的理解
- 谈谈我对Qt的理解
- 谈谈我对计算机专业的理解
- 谈谈我对计算机专业的理解
- 谈谈我对软件度量的理解
- 谈谈我对验收的理解
- 谈谈我对bloom filter的理解。
- 谈谈我对Java中泛型的理解
- shell脚本操作oracle数据库
- 【HEOI2012】bzoj2743 采花
- 工厂模式
- 成员变量\局部变量\静态变量的区别
- live555实现TS码流RTSP传输
- 谈谈我对闭包知识的深刻理解
- 1.1线程的创建与运行
- 常用meta标签
- 扫描二维码登陆实现原理
- (类簇)NSString,NSArray,NSNumber等类的继承问题
- Android:JS调用安卓方法介绍
- MYSQL数据库,数据表简单操作(二)
- 使得Activity透明
- TZImagePickerController 的使用