当前位置: 首页 > Web前端 > HTML5

你还理解闭包吗?你了解闭包吗?

时间:2023-04-05 14:00:46 HTML5

了解闭包?这个问题实际上是在问:什么是闭包?闭包有什么作用?MDN对什么是闭包的解释:闭包是函数和声明该函数的词法环境的组合。按照我的理解是:closure="function"and"sumofvariablesaccessibleinthefunctionbody"一个简单的例子:(function(){vara=1;functionadd(){varb=2varsum=b+aconsole.log(sum);//3}add()})()添加函数本身,以及它内部可访问的变量,即a=1,这两者的结合称为闭包,仅此而已。闭包的作用闭包最大的作用就是隐藏变量。闭包的一大特点是内部函数始终可以访问其所在的外部函数中声明的参数和变量,即使在外部函数返回(生命结束)之后,基于这个特性,JavaScript可以实现私有变量,特权变量,存储变量等。我们以私有变量为例。私有变量的实现方式有很多种,有的依赖约定(在变量名前加_),有的依赖proxy代理,有的依赖Symbol是一种新的数据类型。但真正广泛流行的是闭包的使用。函数Person(){varname='cxk';this.getName=function(){返回名称;}this.setName=function(value){名称=值;}}constcxk=newPerson()console.log(cxk.getName())//cxkcxk.setName('jntm')console.log(cxk.getName())//jntmconsole.log(name)//name仅在函数体中没有定义varname='cxk'getName和setName这两个函数可以访问,但不能在外部访问,与私有化变量相反。