JavaScript中var、let、const的区别
(1)var全局声明变量,let,const声明的变量只在let,const所在代码块内有效 ;
(2) var存在变量提升,即变量可以在声明之前使用,值为undefined ;
console.log(a);//undefined
var a = 2;
等价于
var a;
console.log(a);
a = 2;
let和const声明的变量必须在声明后才可以使用,否则报错,查过别人的博客有人写let和const也存在变量提升,但是他们的确表现为变量不提升,一般也认为他们不存在变量提升;
console.log(a);//报错
let a = 2;
(3)var可以重复定义一个变量,后面覆盖前面的,而let不允许重复定义一个变量,否则报错;
var a=1;
var a=2;
console.log(a);//2
let b=1;
let b=2;
console.log(b)//报错
(4)let和const凡是在声明变量之前使用变量就会报错,称为暂时性死区;
(5)const声明的是只读的常量,一旦声明,常量的值不可改变,并且声明的同时必须初始化。
const PI = 3.14;
PI = 3;//报错