var let 在 for 循环中的区别

简介: var let 在 for 循环中的区别
//使用var声明,得到3个3
var a = [];
for (var i = 0; i < 3; i++) {
  a[i] = function () {
    console.log(i);
  };
}
a[0](); //3
a[1](); //3
a[2](); //3
 
//使用let声明,得到0,1,2
var a = [];
for (let i = 0; i < 3; i++) {
  a[i] = function () {
    console.log(i);
  };
}
a[0](); //0
a[1](); //1
a[2](); //2
for(var i=0;i<5;i++){
   setTimeout(()=>{
        console.log(i);//5个5
    },100)
}
console.log(i);//5
console.log('=============')
 
for(let j=0;j<5;j++){
   setTimeout(()=>{
        console.log(j);//0,1,2,3,4
    },100)
}
console.log(j);//报错 j is not defined

var是全局作用域,有变量提升的作用,所以在for中定义一个变量,全局可以使用,循环中的每一次给变量i赋值都是给全局变量i赋值。


let是块级作用域,只能在代码块中起作用,在js中一个{}中的语句我们也称为叫一个代码块,每次循环会产生一个代码块,每个代码块中的都是一个新的变量i;


 


相关文章
break、continue、return在循环中用法的区别
break、continue、return在循环中用法的区别
|
9月前
|
编译器
说说var、let、const之间的区别?
说说var、let、const之间的区别?
50 0
|
6天前
|
JavaScript 前端开发
如何巧妙使用`Object.keys`方法将`JS`的一个对象的特定的值赋值给另外一个对象
如何巧妙使用`Object.keys`方法将`JS`的一个对象的特定的值赋值给另外一个对象
19 0
|
6天前
|
人工智能 前端开发 Cloud Native
说说var、let、const之间的区别
说说var、let、const之间的区别
|
10月前
|
C#
C#中For循环和Foreach循环的区别
C#中For循环和Foreach循环的区别
|
6月前
|
JavaScript 前端开发
forEach中return会退出循环吗
forEach中return会退出循环吗
62 0
|
6月前
|
JavaScript 前端开发
forEach中return会退出循环吗 (改)
forEach中return会退出循环吗 (改)
37 1
|
9月前
|
编译器
var、let、const之间有什么区别?(详细版)
1.在ES5中,顶层对象的属性和全局变量是等价的,用var声明的变量既是全局变量,也是顶层变量
|
11月前
|
JavaScript 前端开发
let和var的区别
let和var的区别
128 0
lodash判断值是否是Function对象
lodash判断值是否是Function对象
90 0