javascript闭包是什么

以下解释为Javascript闭包。

我们都知道一个概念。

在JS当中,一个函数可以访问其外部的变量资源。

javascript闭包是什么图1

一个典型的代码

但以下这种情况会出错。

function m1(){ var a = 100; console.log(a++); } function m2(){ console.log(a++); //这里无法访问a }

如果,我们想在m2的作用域里,访问m1里的变量,就像下面这样:

javascript闭包是什么图2

首先,我们可以在m1的内部创建一个函数m3

function m1(){ var a = 100; function m3(){ console.log(a++); } }

javascript闭包是什么图3

m3可以正常访问a,接下来我们增加一个return操作。

function m1(){ var a = 100; return function m3(){ console.log(a++); } }

既然有了返回值,那我们不妨接收一下,继续编写代码如下:

function m1(){ var a = 100; return function m3(){ console.log(a++); } } var _m3 = m1();

我们执行了函数m1, 并将返回值赋值给_m3

那么目前_m3m3函数是等价的,即它们是同一个函数。

有了_m3,一切都好办了。我们继续编写代码

function m1(){ var a = 100; return function m3(){ console.log(a++); } } var _m3 = m1(); function m2(){ _m3(); }

因为_m3是全局变量,因此m2可以调用_m3

也就等价于m2间接的,访问到了变量a

javascript闭包是什么图4

通常,我们管m3,叫做一个『 闭包函数 』

下面列举几个常见的闭包场景:

for(var i=0; i<list.length; i++){ var item = list[i]; item.Onclick= (function(num){ return function(){ //…… } })(i); }

function (){ var that = this; setTimeout(function(){ //…… },2000) }

function User(){ var _age = 0; this.getAge = function(){ return _age; } this.setAge = function(age){ this._age = age; } }

(function(){ var cache = […]; return { get : function(){ //… } }; })()

(function(){ var t = null; return function(){ if(!t){ t = create(); } } })()

原创文章,作者:普尔小编,如若转载,请注明出处:http://www.puerpx.cn/pxwd/10630.html

(0)
上一篇 2023-05-18 下午12:59
下一篇 2023-05-18 下午2:01

相关推荐

  • 美容学校学费,宠物美容学校学费一般是多少

    一、看宠物美容学校的师资力量。通常师资力量强大,教学设施齐全的培训机构,他们的收费价格就会高一些,相反如果是各方面平平的话,收费会偏低一些;很多宠物美容培训学校在教学和管理方面都有…

    培训问答 2022-05-26
  • 重庆学java去哪个培训机构比较好

    零基础小白想要学习java开发技术入门还是有一定难度的,毕竟是之前没有接触过任何的编程基础,而且现在企业在招聘的时候,大都是需要有一定的项目实战经验,况且企业对java开发技术要求…

    培训问答 2022-05-21
  • 儿童夏令营,男孩进夏令营死亡

    新闻每年都有,抗议也一直存在。为什么还有这么多的父母不明白,孩子的成长问题却从没细心地关心和考虑。 自古以来,父母和家庭是人生中第一教育课堂,却为什么还要去迷信所谓的“矫正中心”、…

    2022-06-21
  • 六个月宝宝早教课程,六个月的宝宝会什么技能

    您好,欢迎点击右上角“关注” 分享更多母婴、育儿知识。 6个月的宝宝会很容易地从仰卧位翻到侧卧位,再从侧卧位翻到俯卧位,还学会了抓东西,虽然还不能坐直,但是孩子已经可以靠着东西坐一…

    2022-11-10
  • 速写培训,速写应该怎么练才能快速练好

    怎样练习速写? 仅凭个人经验回答一下关于速写练习的。 早年学美术的时候,刚开始只是注重素描、色彩的训练,对于速写并不是特别重视,但因为术科考试的需要才开始了速写的练习。教我们的老师…

    2022-11-29
  • 怎样学好网络

    很荣幸能够,我是头条号网络技术达人王山石,十八年的网络技术领域,在一线互联网公司和厂商工作过,热衷于分享网络技术包括,有线、无线、路由器、交换机、华为认证、思科认证等周边问题。 高…

    2023-02-17
  • 编曲培训,想做作曲编曲需要学些什么软件

    一般来说,影响初学者深入学习音乐的瓶颈在于视唱练耳水平,自学的话具备较强的视谱读谱的能力似乎更重要一些,这决定了你能否读下去一些音乐理论著作,特别特别是牵涉谱例的时候,可以大致以嗓…

    培训问答 2022-09-19
  • 现在郑州还有公务员福利房吗

    明确告诉你,不论哪里的公务员都不能福利分房! 福利分房是什么年代的产物了,现在都已经快2020年了,哪里还有什么福利分房。福利分房在上个世纪比较火热,机关事业单位工作人员以及国企职…

    培训问答 2022-12-30
  • 网上英语一对一辅导,英语线上一对一辅导有用吗

    这两种学习英语的方式各有利弊,无法明确说出谁好谁坏,学习英语的方法千万种,还是要因人而异! 首先从性价比上来说,线上教育,优点主要就是,第一,节省了线下孩子去培训班的来回路程时间,…

    培训问答 2022-05-26
  • 想做烟球冰淇淋,需要投资多少哪里可以学到

    最近网上疯狂流传的一种新奇的冰淇淋,吃起来居然可以冒烟。冰淇淋品牌也是越来越火,那么冒烟的冰淇淋到底是怎么做出来的?为什么会冒烟? 首先,我们来了解下会冒烟的冰淇淋的制作原理。会冒…

    2022-05-02