首先是这两段代码代码1:functioncreateFunctions(){varresult=newArray();for(vari=0;i
2 回答
杨__羊羊
TA贡献1943条经验 获得超7个赞
代码1中,数组result中的函数都引用的createFunctions中的变量,而for循环结束之后,i的值为10,所以你打印出来的都是10。这实际是闭包延迟计算的问题:result[i]=function(){returni;};//在执行这个语句的时候,解释器并没有计算i的值,直到你调用`result[i]`的时候,这时i已经是10了
侃侃无极
TA贡献2051条经验 获得超10个赞
result[i]=function(){returni;};}这段代码中returni中的i变量是自由变量,他的值是创建时时父作用域决定的,当函数执行时父作用域i已经为10了,所以输出10了解一下自由变量,作用域和执行环境就懂了
添加回答
举报
0/150
提交
取消