js内部函数问题,函数内嵌套函数

如图,为啥第二个f1()输出为2,

img

闭包

印象中var是全局,你改成let i=0试试?

闭包导致变量保存下来了

没毛病,你的误区是作用域。

f1 = f() 所以得到了一个返回函数。

f1 调用的时候是全局作用域,全局没有i, 只能声明i然后++编程了1

你再次调用肯定还是 + 1

这个是闭包,i被保存起来了。闭包的特点就是 函数 return 函数 .这样return的函数就能访问外面的函数里的变量,且变量不会被销毁