1.因为根据程序执行的顺序可知,首先之心test函数.所以首先分析test函数执行过后 函数作用域链的情况.
预编译:找到变量 arr和i,并为其赋值为undefined.
解释执行:为arr push10个函数;此时的i也变成了10;以为不满足条件,所以不能继续给数组push 函数.
2.此时执行被返回的函数,也就是形成所谓的闭包.所以此时打印的每个函数所得到的结果都是10.
分析:此函数中有一个立即执行函数.它执行完后会立即销毁自己的作用域链,但是它没有死透彻.因为里面还有一个函数,这个函数被保留下来这个函数将它的作用域保存了下来.那会是j.
也就是说此时闭包被保存出来的函数时站在两代人的肩膀上的.
网友评论