这题没搞懂
来源:7-8 选择练习
JJJustin
2019-07-23 10:23:50
老师能解析一下吗 从第一个打印开始
2回答
好帮手慕糖
2019-07-23
同学你好,是闭包,但是前三个是独立调用的,相当于每次都重新开辟一个作用域,来存放num,每次都是新的,所以每次都输出1。
而后面的是1,2,3。同学可以测试下哦。
祝学习愉快!
好帮手慕糖
2019-07-23
同学你好,1、(1)count()调用得到这个函数的返回值,就是里面的返回的那个函数,然后后面在添加一个括号,就是调用了返回的这个函数。
(2)count()()这样调用,每次都会创建一个新的局部作用域,num的值会不断地被初始化为1;
(3)所以前三个都是每次调用一次,输出一个1。
2、(1)后面的三个,是先调用count(),且fn接收的就是返回的function;
(2)num是一个局部变量,调用之后就会被回收,但是fn是一个全局变量,不会自动回收,并且里面还用到了num变量,所以num也不会被回收。
(3)每调用一个fn,num值就会进行计算,所以输出的值为1,2,3 。
希望能帮助到你,祝学习愉快!
相似问题