因为刚刚开始学习闭包很多地方没能理解到,如图所示在控制台中的 undefined
是如何得到的? 我只执行了返回函数呀,为什么会有两个执行结果?请大佬们详解下~
因为刚刚开始学习闭包很多地方没能理解到,如图所示在控制台中的 undefined
是如何得到的? 我只执行了返回函数呀,为什么会有两个执行结果?请大佬们详解下~
实质上就是
var n = 1;
function f2() {
console.log(n);
}
console.log(f2())
因为你f2并没有返回值,所以就是undefined
首先 result=f1(); 此时result=f2;
然后console.log(result());先执行result也就是f2 打印了n的值因为你没有执行test,所以n为1所以打印的是 1 然后 执行 console.log(result());因为result()没有返回值所以是undefined。
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
5 回答2.2k 阅读
5 回答832 阅读
3 回答1.7k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
你可以重最低下兩段代碼可以說起
var result = f1();
變量指向函數console.log(result())
其實可以轉話為f1()()
即函數執行
f1()
返回的函數,即f2()
所以首先會執行f1()
下的f2()
函數 再執行f1()
所以首先
console.log(n)
即1
在執行函數
f1()
時候return f2
,但由於函數沒有對返回值,所以打印出undefined