星空网 > 软件开发 > Java

JavaScript的闭包是什么意思以及作用和应用场景

JavaScript闭包

1、什么是闭包

  百度百科对于闭包的解释是:闭包是指可以包含自由(未绑定到特定对象)变量的代码块;这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量)。

以代码进行阐释:

function a(){  //建立函数a  var i=0;    //定义变量i  function b(){    //在函数a内套入函数b    alert(++i);    //提示框,输出i的值  }  return b;      //返回函数b的值}var c = a();    //将函数a赋给变量cc();    //输出c

  这样在执行完var c=a()后,变量c实际上是指向了函数b,再执行c()后就会弹出一个窗口显示i的值(第一次为1)。这段代码其实就创建了一个闭包,为什么?因为函数a外的变量c引用了函数a内的函数b,就是说:当函数a的内部函数b被函数a外的一个变量引用的时候,就创建了一个闭包。

2、闭包的作用

  以以上函数为例,闭包的作用就是在a执行完并返回后,闭包使得Javascript的垃圾回收机制GC(垃圾回收机制)不会收回a所占用的资源,因为a的内部函数b的执行需要依赖a中的变量,由于闭包的存在使得函数a返回后,a中的i始终存在,这样每次执行c(),i都是自加1后alert出i的值。那么我们来想象另一种情况,如果a返回的不是函数b,情况就完全不同了。因为a执行完后,b没有被返回给a的外界,只是被a所引用,而此时a也只会被b引 用,因此函数a和b互相引用但又不被外界打扰(被外界引用),函数a和b就会被GC回收。

3、闭包的应用场景

  1. 保护函数内的变量安全。以最开始的例子为例,函数a中i只有函数b才能访问,而无法通过其他途径访问到,因此保护了i的安全性。
  2. 内存中维持一个变量。依然如前例,由于闭包,函数a中i的一直存在于内存中,因此每次执行c(),都会给i自加1。

 

由知道借鉴,互相参考,共同学习。




原标题:JavaScript的闭包是什么意思以及作用和应用场景

关键词:JavaScript

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

亚马逊中国如何本地化?渠道创新:https://www.ikjzd.com/articles/134877
牛!19岁少年竟是天池医疗CEO,公司收入超过2亿美元:https://www.ikjzd.com/articles/134878
怎样看懂你的亚马逊广告报告?:https://www.ikjzd.com/articles/134879
欧洲多国抵制亚马逊,卖家还能在黑五实现爆单吗?:https://www.ikjzd.com/articles/134880
亚马逊卖家,黑五倒计时3天!“防坑”指南终版来了!提前阅读,有效避坑!:https://www.ikjzd.com/articles/134881
亚马逊推广新收货方法!配送压力可能缓解?:https://www.ikjzd.com/articles/134882
长治婚庆女司仪和主持人:https://www.vstour.cn/a/366176.html
北京丰台区水上乐园哪家好玩?:https://www.vstour.cn/a/366177.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流