当声明变量时,JavaScript 提供了三种关键字:var、let 和 const。这些关键字用于定义不同类型的变量,并具有不同的作用域和可变性。
var:在旧版本的 JavaScript 中,var是用于声明变量的关键字。它具有函数作用域,意味着变量的作用域限定在声明它的函数内部或全局作用域中。var声明的变量可以被重新赋值,并且在声明之前就可以访问到(存在变量提升的特性)。例如:
function example() {
var x = 10;
if (true) {
var y = 20;
console.log(x); // 10
console.log(y); // 20
}
console.log(x); // 10
console.log(y); // 20 (在函数作用域内仍然可访问)
}
let:let是在 ES6(ECMAScript 2015)中引入的关键字,用于声明块级作用域的变量。块级作用域是指在{}内部声明的变量只在该块内部可见。与var不同,let声明的变量不会被提升到作用域顶部,并且在同一个作用域中不能重复声明同名变量。例如:
function example() {
let x = 10;
if (true) {
let y = 20;
console.log(x); // 10
console.log(y); // 20
}
console.log(x); // 10
console.log(y); // ReferenceError: y is not defined
}
const:const也是在 ES6 中引入的关键字,用于声明常量。与let类似,const声明的变量也具有块级作用域,但它的值一旦被赋值后就不能再被修改。对于基本类型的常量,它们的值是不可变的;对于对象类型的常量,虽然不能重新赋值,但仍然可以修改对象的属性。例如:
function example() {
const x = 10;
if (true) {
const y = 20;
console.log(x); // 10
console.log(y); // 20
}
console.log(x); // 10
console.log(y); // ReferenceError: y is not defined
const obj = { value: 30 };
obj.value = 40; // 可以修改对象的属性
console.log(obj.value); // 40
}
总结来说,let 和 const 关键字引入了块级作用域的概念,提供了更好的变量声明和管理方式。let 声明的变量可以被重新赋值,而 const 声明的变量是常量,不能被重新赋值。使用 let 和 const 可以避免变量提升和意外的变量修改,提高代码的可读性和可维护性。
浙公网安备 33010602011771号