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
原创粉丝点击