2-6-选择题,我的理解【下】
来源:2-6 选择题
我学习太差被关起来了
2019-12-09 17:27:51
为了更好地理解 2-6-选择题 以及闭包,我再举一例:
function fun() { console.log("This is fun"); function f1() { console.log("This is f1"); return f2; } function f2() { console.log("This is f2"); } return f1; } console.log(fun()()());
从代码中明显可见:
函数fun的返回值是f1函数,函数f1的返回值是f2函数,函数f2没有返回值(默认为undefined)。
我的分析如下:
【第1步】fun():执行fun函数。
结果:输出"This is fun",返回f1函数。
【第2步】fun()():fun()相当于f1函数,因此fun()()相当于f1(),即执行f1函数。
结果:输出"This is f1",返回f2函数。
【第3步】fun()()():f1函数返回值为f2函数,因此f1()(即fun()())相当于f2,因此fun()()()相当于f2(),即执行f2函数。
结果:输出"This is f2"。
【第4步】console.log(fun()()()):f2函数的返回值为undefined。
因此,结果:输出undefined。
程序运行结果截图如下:
分析与运行结果一致,从而验证了分析是正确的。
2回答
好帮手慕慕子
2019-12-09
同学你好, 其实同学两个例子举的都是可以的,只不过第二个例子通过输出++n的值,可以更好的展示出闭包的效果。输出结果示例:
如果帮助到了你,欢迎采纳,祝学习愉快~
我学习太差被关起来了
提问者
2019-12-09
上面的例子举得不好,这里补充一个:
var n = 666; function fun() { console.log("This is fun"); console.log(n); var n = 233; function f1() { console.log("This is f1"); console.log(++n); return f2; } function f2() { console.log("This is f2"); console.log(++n); return ++n; } return f1; } console.log(fun()()());
相似问题