老师我谈谈对闭包的理解
来源:2-5 闭包
洋芋儿泥
2020-02-05 22:51:26
比如我想让这个函数实现调用三次分别累加输出1,2,3
然后不用闭包是这样一个状态
但是这样有一个弊端,比如中途我进行了其他操作会影响最后调用的值,而且还会污染全局变量
但是呢为了不污染全局变量,我把num定义到函数内,又会造成每次调用函数,num都会被重新赋值为0,就不会累加。因此需要用到闭包,我对闭包的理解就是对这个代码进行“降维打击”(相当于就是把他们放到一个函数中都变成在局部作用域中运行)
当调用外层函数count的时候,就相当于执行了一个提取的动作(return就是返回要提取的函数),让它变成类似于我图一在全局变量下的样子,如图
红线表示类比过去,但是不一样的是,图一在全局作用域下,num暴露在全局作用域中,经过这样骚操作过后,相当于调用count过后,我虽然跟图一差不多,但是我的东西却不在全局作用域下了
2回答
同学你好, 老师认真看了同学的分析,理解都是对的,由浅入深,可以说分析的很透彻,继续加油。
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
洋芋儿泥
提问者
2020-02-05
图一是指的第一张图
相似问题