今天又复习了一次闭包,参考文章在chrome开发者工具中观察函数调用栈、作用域链与闭包,这样在调试中理解会更加深刻。
闭包的形成需要两个条件:
1.在函数内部创建新的函数;
2.新的函数在执行时,访问了函数的变量对象;
总结一下闭包:
1.闭包是在函数被调用执行的时候才被确认创建的。
2.闭包的形成,与作用域链的访问顺序有直接关系。
3.只有内部函数访问了上层作用域链中的变量对象时,才会形成闭包,因此,我们可以利用闭包来访问函数内部的变量。
上面是这篇文章的总结,我觉得总结的很好。为了防止我后面钻牛角尖,我这里抠一下字眼,
闭包被确认创建
与形成闭包
:
确认创建:是指在chrome浏览器中,调试工具那一栏Scope里的Closure 显示的闭包函数。确认创建则显示,否则没有。
形成闭包:是指虽然是闭包,但是浏览器中的Closure没有显示该函数为闭包函数。
上面两句话可以根据这篇文章的demo7来理解。