JavaScript之闭包closure
来源:互联网 发布:大约在冬季网络歌手 编辑:程序博客网 时间:2024/06/05 05:42
1.什么是闭包
字面理解:闭:关闭,封闭的意思,对外界不开放的。包:包装起来,包裹起来
我们都知道内层的作用域可以访问外层的作用域,但是反过来不行,但是有的时候,我们确实需要访问一个封闭空间中的数据,闭包就是这样一种间接访问封闭空间中私有数据的技术.下面是一个简单的例子
function func1(){ var b=100; return function () { return b; } }var res=func1()();console.log(res);-->100/*我们在函数func1外部无法直接访问局部变量b,但在func1内部的方法却可以访问并返回同级的变量b。func1()一个括号代表func1内返回的函数本身,func1()()再加一个括号代表调用这个函数。*/
闭包还有另外一种形式简单说一下:
(function(a,b){ console.log( a+b); })(1,2);/*第一个括号表示函数的定义,第二个括号表示 函数的调用,这里相当于一个立即执行函数。*/
2.用闭包设置或读取数据
注意:用闭包只能获取值,但是却不能修改值,看下面的代码
function foo(){ var name = "zs"; return {//与前面不同这里返回的是一个对象 getName:function(){//获取属性 return name; }, setName:function(nameValue){//设置属性 name = nameValue; }, } } var func = foo(); console.log(func.getName());-->zs func.setName("张校长"); console.log(func.getName());-->张校长
3.闭包的作用
01 创建一个私有的空间,保护数据,外界如果需要访问数据必须通过函数提供的指定方法。02在这些指定的方法中,我们可以设置一些校验的逻辑,以保证对数据访问和设置的安全性。03 闭包可以延长变量的生命周期,这里可能有些不太好理解,普通的局部变量,在函数调用完成后被销毁,但是使用闭包后,因为每次调用外层函数都会返回内部局部变量,也就是这个引用必须一直存在,所以变量不会被销毁。闭包会占用大量内存,所以我们使用的时候要慎重。
4.闭包的应用 ##
定时器应用,div事件应用…待补充
0 0
- JavaScript之闭包closure
- JavaScript 之理解closure(闭包)
- javascript 高级系列之闭包(closure)
- Javascript闭包(Closure)
- Javascript--闭包(closure)
- Javascript闭包(Closure)
- Javascript闭包(Closure)
- javascript closure 闭包
- Javascript闭包(Closure)
- [Javascript] 闭包 closure
- Javascript闭包(Closure)
- JavaScript闭包(Closure)
- 闭包之Closure
- JavaScript中的闭包(Closure)
- C#、Javascript闭包(closure)
- Javascript闭包(Closure)
- Javascript闭包(Closure)
- 理解Javascript闭包(closure)
- Android技术积累:开发规范
- bzoj3295: [Cqoi2011]动态逆序对(题解2)
- 蓝牙模块 HC-06 的配置
- CCF NOI1008 水仙花数
- 《一本书读懂TCP/IP》读后感——第五章TCP/IP网络规则 (二)
- JavaScript之闭包closure
- 大数据IMF传奇行动绝密课程第91课:SparkStreaming基于Kafka Direct案例实战和内幕源码解密
- 网络长链接框架之MINA初体验
- Android Title标题栏的修改(隐藏,菜单)
- JavaOop01抽象和封装
- E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
- 1621 混合牛奶
- MySQL提示“too many connections”的解决办法
- Flume架构以及应用介绍