当声明变量时,JavaScript 提供了三种关键字:varlet 和 const。这些关键字用于定义不同类型的变量,并具有不同的作用域和可变性。

  1. 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 (在函数作用域内仍然可访问)
}
  1. letlet 是在 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
}
  1. constconst 也是在 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 可以避免变量提升和意外的变量修改,提高代码的可读性和可维护性。

posted on 2023-11-06 20:51  jarsing  阅读(122)  评论(0)    收藏  举报