var、let、const的区别和使用
作用域不同
var声明的变量作用域为该语句声明的 函数内。
let和const声明的变量作用域为该语句声明的 代码块中。
if (true) {
var a = 123;
}
console.log(a); // 123 可以访问到 var不具有块级作用域
if (true) {
let a = 123; // let声明的a只作用在一堆花括号的代码块中
}
console.log(a); // 报错:Uncaught ReferenceError: a is not defined
变量提升
var 声明的变量具有变量提升的特点,而let和const不具有。
console.log(a);
var a = 123; //undefined
console.log(a);
let a = 123; // 报错:Uncaught ReferenceError: Cannot access 'a' before initialization
值的可更改性
var和let声明的变量,值可以更改,而const声明的变量值不可以更改。
注意:若const声明的变量的值是简单数据类型,则值不可以更改,若为复杂数据类型,则数据的地址不可以更改,内容可以。
const a = 123;
a = 345;
console.log(a); //报错:Assignment to constant variable.
const arr = [1, 2, 3];
arr[0] = 4;
arr[1] = 5;
arr[2] = 6;
console.log(arr); // (3) [4, 5, 6]
arr = [7, 8, 9]; // 报错:Assignment to constant variable.
使用:若存储的值是固定不变的,则应尽量使用const,可以提高效率。