B007-作用域和自由变量的场景题
let i
for(i = 1; i <=3; i ++ ) {
setTimeout(function() {
console.log(i)
})
}
输出: 4 4 4
for(let i = 1; i <=3; i ++ ) {
setTimeout(function() {
console.log(i)
})
}
输出: 1 2 3
var i
for(i = 1; i <=3; i ++ ) {
setTimeout(function() {
console.log(i)
})
}
输出:4 4 4
for(var i = 1; i <=3; i ++ ) {
setTimeout(function() {
console.log(i)
})
}
输出:4 4 4
我们可以看出 当在for循环外边声明时候 var 和 let 效果是一样的
for(var i = 1; i < 4; i ++) {
setTimeout((function(i) {
return function() {
console.log(i)
}
})(i),0)
}
输出: 1 2 3
var i
for(i = 1; i <=3; i ++ ) {
console.log(i)
}
输出: 1 2 3
let i
for(var i = 1; i <=3; i ++ ) {
console.log(i)
}
输出:1 2 3