首先我们要先明白 let 和 var 的作用域。
let :在 let 定义的变量 具有 全局作用域 函数作用域(局部作用域) 块级作用域
var :在 var 定义的变量 具有 全局作用域 函数作用域(局部作用域)
其次我们要知道 在javascript中执行机制分为 同步执行 和异步执行 先执行主线任务的代码 其次再执行异步等待执行的代码 在settimeout中属于异步执行的代码 换句话说 要先执行完其他代码 才会执行该代码
for(let i =0 ;i <=5;i++ ){
set time out(function(){ //此时该代码不会立即执行而是放在任务队列中
console.log(i) //结果是 0 1 2 3 4
}
for(var i =0 ;i <=5;i++ ){
set time out(function(){ //此时该代码不会立即执行而是放在任务队列中
console.log(i) // 结果是 5 5 5 5 5
}
})
}