老师这里的闭包我不太明白,能讲清楚吗?

老师这里的闭包我不太明白,能讲清楚吗?

const xiaoming = {

    name: 'xiaoming',

    age: null,

    getAge: function() {

        let _this = this;

        // ...ajax

        setTimeout(function() {

            _this.age = 14;

            console.log(_this);

        }, 1000);


    }

}; 


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕言 2019-11-08 17:57:41

同学你好,我们先来了解一下闭包的特性。

正常情况下,函数内部声明的变量为局部变量,在函数的外部是访问不到的。

如下:

http://img1.sycdn.imooc.com//climg/5dc53aca0965895b03770202.jpg

控制台:

http://img1.sycdn.imooc.com//climg/5dc53ad709d9759604880190.jpg

函数里面再定义一个函数,那么新定义的函数可以访问到外层函数声明的变量。

如下:

http://img1.sycdn.imooc.com//climg/5dc53bab09eb042103430267.jpg

控制台:
http://img1.sycdn.imooc.com//climg/5dc53bb4095d614403030187.jpg

同学可以再理解一下哦

如果还有其他疑问,建议在问答区重新提问,便于同学后期查找总结

如果我的回答帮到了你,欢迎采纳,祝学习愉快~

好帮手慕言 2019-11-07 18:14:19

同学你好,函数嵌套函数,这是闭包的一个结构。在本代码中,getAge方法嵌套定时器里面的函数。就形成了一个闭包特性。这里主要是利用闭包的特性, 在setTimeout的回调函数中, 访问到getAge的局部变量_this

如果想了解闭包,可以去复习一下知识,链接:https://class.imooc.com/lesson/791#mid=19881

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

  • 提问者 慕前端5592812 #1
    闭包好像得把函数返回出去,可是这里怎么体现
    2019-11-08 15:08:51
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师