JavaScript 中 var、let、const 的区别
在 JavaScript 中,关键字 var、let、const 有什么区别?这是一道经典面试题。
六个方面
下面,我们从 6 个方面来回答 var、let、const 之间的区别。
1、是否存在变量提升
变量提升,即变量可以在声明之前使用。var
声明的变量存在变量提升,全局作用域下是 window
属性。
function A() {
console.log(a);
var a = 10;
}
调用 A()
函数时,输出 undefined
。这是因为 JavaScript 预处理器将变量 a 的声明提升到函数体的开头了,相当于:
function A() {
var a;
console.log(a);
a = 10;
}
而 let
和 const
声明的变量则不 会被提升。
function B() {
console.log(b);
let b = 10;
}
function C() {
console.log(c);
const c = 10;
}
调用 B()
和 C()
函数时,都会直接抛出 Uncaught ReferenceError 错误。
2、变量能否重复声明
var
能重复声明,例如:
var a = 10;
var a = 20;
console.log(a); // 输出 20
let
和 const
不能重复声明,例如:
let b = 10;
let b = 20; // 报错 Uncaught SyntaxError
const c = 10;
const c = 20; // 报错 Uncaught SyntaxError