第一张图是所有循环的闭包共用了i,所以i始终是最大值
第二张图就是每个循环创建了一个闭包,保存当前循环i的值
每当函数创建的时候,如果该函数引用了同环境作用域的变量,就会立刻创建一个该函数的闭包
并且这是循环,创建了3个闭包,但是有一点就是,第一个 这三个闭包共用了一个词法环境,说人话就是,这三个闭包共用了item和i
第二个,在里面的闭包形成之前,在外面又套了一个闭包 。外面那个匿名函数创建的闭包保留了外面的i的引用,但是这个函数是立刻执行的,这时候匿名函数内部的item就是正确的值,内层的闭包再引用各自的item值
因为包了函数后,里层闭包只能保存到item的引用,保存不到i的引用,i是上上层的,所以obj[0]执行的时候,尽管i已经是3了,但是item还是正确的值