JavaScript中var、let和const之间的区别
var | let | const | |
---|---|---|---|
变量 | 提升 | 没有提升 | 没有提升 |
作用域 | 只要不是在function里就是全局变量 | 配合{}可以形成块级作用域 | 也会形成块级作用域 |
是否挂在到GO上 | 是 | 否 | 否 |
是否能重复声明 | 能 | 否 | 否 |
赋值 | 可以不赋值 | 可以不赋值 | 必须赋值 |
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声明的变量必须在声明后才可以使用,否则报错;
console.log(a);//报错
let a = 2;
console.log(a);//报错
const 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;//报错