千家信息网

js中闭包有什么特点

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章给大家分享的是有关js中闭包有什么特点的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。闭包是js中的一大特色,也是一大难点。简单来说,所谓闭包就是说,一个函数能够访问
千家信息网最后更新 2026年10月31日js中闭包有什么特点

这篇文章给大家分享的是有关js中闭包有什么特点的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

闭包是js中的一大特色,也是一大难点。简单来说,所谓闭包就是说,一个函数能够访问其函数外部作用域中的变量。

闭包的三大特点为:

1、函数嵌套函数

2、内部函数可以访问外部函数的变量

3、参数和变量不会被回收。

举例来说:

function test(){   var a=1;   return function(){    alert(a);   }  }  var try=test();  try();//弹出a的值

这个例子中,变量a在test方法外部是无法访问的,但test方法里面,嵌套了一个匿名函数,通过return返回,test作用域中的变量a,

可以在匿名函数中访问。并且当test方法执行后,变量a所占内存并不会释放,以达到嵌套的函数还可以访问的目的。

闭包的作用在于,可以通过闭包,设计私有变量及方法。

举例来说:在java中创建perosn类,含有私有变量name。

public class Person{  private String name='wy';  public Person(val){    name=val;  }  public void setName(val){    name=val;  }  public String getName(){   return name;  }}

在js中实现类似java创建类的功能:

(function(){      var name="wangyu";      Person=function (val) {        name=val;      }      Person.prototype.setName=function(val){        name=val;      }      Person.prototype.getName=function () {        return name;      }    })();   var person1=new Person("sj");   alert(this.name)//undefined 因为在function作用域外不能访问   alert(person1.getName());//sj

在function里面的name,由于是在function作用域中,所以外部无法访问,但是可以通过创建person对象,调用person的方法,来达到修改和访问name值的目的,类似于java类中的私有变量,外部无法访问,只能通过类方法访问。

再看一个私有变量的例子:

var aaa = (function(){    var a = 1;    function bbb(){        a++;        alert(a);    }    function ccc(){        a++;        alert(a);    }    return {        b:bbb,       //json结构        c:ccc    }  })();  alert(aaa.a)//undefined   aaa.b();   //2  aaa.c()   //3

总结:

1、闭包是指有权访问另一个函数作用域中的变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量。闭包的缺点就是常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。

2、不必纠结到底怎样才算闭包,其实你写的每一个函数都算作闭包,即使是全局函数,你访问函数外部的全局变量时,就是闭包的体现。

感谢各位的阅读!关于"js中闭包有什么特点"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

函数 闭包 变量 作用 方法 内存 就是 私有 特点 举例来说 例子 全局 内容 可以通过 更多 目的 篇文章 不当 不错 实用 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技互联网 云电互联网科技 广州凡科互联网科技 互联网科技论坛 大白互联网科技 上海亿帐通互联网科技 银川新华互联网科技学校地址 博兴的互联网电子科技公司 来此购互联网科技有限公司 哈尔滨屹滨互联网科技有限公司 元气玛特互联网科技公司是外包吗 银行科技岗属于互联网吗 启辰互联网科技 互联网科技包装股份有限公司上市 互联网科技企业商标注意事项 上海万顺科技互联网有限公司招聘 福仕德教育科技互联网 互联网科技大会大佬 互联网企业和网络科技有限公司 中国主要互联网科技公司 互联网加科技 河南云网互联网络科技有限公司 青岛互联网科技公司 科技互联网公司logo 甘肃拓世互联网科技有限公司 华服互联网科技官网 移动互联网年度科技创新 国大互联网教育科技有限公司工作 互联网数据科技专业 深圳无忧互联网科技
0