Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
141 views
in Technique[技术] by (71.8m points)

这块代码为什么都是3

之前知道...长时间不看忘记了,最近刷题刷到,查资料关键词也不知道怎么查...求上课

var arr = []
for(var i = 0 ;i<3;i++){
    arr[i] = function(){
        console.log(i)
    }
}
arr[0]() //3
arr[1]() //3
arr[2]() //3

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

变量ivar命令声明的,在全局范围内都有效,所以全局只有一个变量i。每一次循环,变量i的值都会发生改变,而循环内被赋给数组arr的函数内部的console.log(i),里面的i指向的就是全局的i。也就是说,所有数组arr的成员里面的i,指向的都是同一个i,导致运行时输出的是最后一轮的i的值,也就是 10。

https://es6.ruanyifeng.com/#docs/let


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...