es5 中得变量
es5 中变量使用var
关键字声明,var 声明得关键字存在变量提升,没有块级作用域,可重复定义,后面定义得覆盖前面定义
1 2 3 4
| console.log(a); var a = 1; var a = 2; console.log(a);
|
1 2 3 4
| for (var i = 0; i < 2; i++) { setTimeout(() => console.log(i), 100); } console.log(i);
|
es6 中变量声明
es6 中使用let
和const
声明变量,不会发生变量声明提升,拥有块级作用域,同一作用域中不可重复声明变量
1 2
| console.log(a); let a = 10;
|
1 2 3 4
| for (let i = 0; i < 2; i++) { setTimeout(() => console.log(i), 100); } console.log(i);
|
let 和 const 的区别
let 声明的变量可以重新赋值,const 声明的变量不能重新赋值
1 2 3 4 5 6 7
| let a = 0; const b = 10;
a = 12; console.log(a);
b = 13;
|