在JavaScript中,var,let和const是用来声明变量的关键字,它们的主要区别如下:
- var声明的变量作用域是函数作用域,而let和const声明的变量作用域是块作用域
- 在同一作用域下,var可以被重复声明,而let和const不行。如果尝试在同一作用域下重新声明一个已经用let或const声明的变量,会导致语法错误
- var声明的变量可以在声明之前使用,这种行为被称为变量提升。而let和const声明的变量不会被提升,如果在声明之前使用将会导致引用错误
- let和const声明的变量是块级作用域,这意味着它们只在声明它们的块内部可用,而不是在整个函数内部
- const声明的变量是常量,其值无法被修改。如果尝试修改const声明的变量,会导致运行时错误
下面给出例子说明
function example() {
var a = 1;
let b = 2;
const c = 3;
if (true) {
var a = 4; // 在同一作用域中,a被重复声明
let b = 5; // 在块级作用域中,b没有被重复声明
const c = 6; // 在块级作用域中,c没有被重复声明
console.log(a); // 输出4
console.log(b); // 输出5
console.log(c); // 输出6
}
console.log(a); // 输出4,var声明的变量可以跨越块作用域
console.log(b); // 输出2,let声明的变量只在块作用域内可用
console.log(c); // 输出3,const声明的变量只在块作用域内可用,并且不能修改
}
example();