老师我谈谈对闭包的理解

来源:2-5 闭包

洋芋儿泥

2020-02-05 22:51:26

比如我想让这个函数实现调用三次分别累加输出1,2,3

然后不用闭包是这样一个状态

http://img.mukewang.com/climg/5e3acf60091ded1302700171.jpg

但是这样有一个弊端,比如中途我进行了其他操作会影响最后调用的值,而且还会污染全局变量

http://img.mukewang.com/climg/5e3acf60092422ab02340196.jpg

但是呢为了不污染全局变量,我把num定义到函数内,又会造成每次调用函数,num都会被重新赋值为0,就不会累加。因此需要用到闭包,我对闭包的理解就是对这个代码进行“降维打击”(相当于就是把他们放到一个函数中都变成在局部作用域中运行)

http://img.mukewang.com/climg/5e3ad1eb092cee0202830277.jpg

当调用外层函数count的时候,就相当于执行了一个提取的动作(return就是返回要提取的函数),让它变成类似于我图一在全局变量下的样子,如图

http://img.mukewang.com/climg/5e3ad5b40909d39b06340318.jpg

红线表示类比过去,但是不一样的是,图一在全局作用域下,num暴露在全局作用域中,经过这样骚操作过后,相当于调用count过后,我虽然跟图一差不多,但是我的东西却不在全局作用域下了

写回答

2回答

好帮手慕慕子

2020-02-06

同学你好, 老师认真看了同学的分析,理解都是对的,由浅入深,可以说分析的很透彻,继续加油。

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

0

洋芋儿泥

提问者

2020-02-05

图一是指的第一张图

1

0 学习 · 14456 问题

查看课程