返回

揭秘var、let、const:JS变量声明三剑客

前端

JavaScript中的变量声明:var、let、const

在JavaScript中,变量是程序必不可少的组成部分。ECMAScript提供三种来定义变量:var、let和const。其中,var在ECMAScript的所有版本都可以使用,而const和let只能在ECMAScript6及更晚的版本使用。

var:古老而灵活的变量声明方式

var是JavaScript中最古老的变量声明方式,它允许您声明变量并赋予其值。var声明的变量具有以下特点:

  • 变量可以重复声明。
  • 变量可以被重新赋值。
  • 变量可以在任何作用域内访问,包括全局作用域和局部作用域。

以下代码演示了var的使用方式:

var message = "Hello, world!";
console.log(message); // 输出: Hello, world!

message = "Goodbye, world!";
console.log(message); // 输出: Goodbye, world!

let:块级作用域的变量声明方式

let是ES6中引入的变量声明方式,它允许您声明块级作用域的变量。块级作用域是指由花括号({})括起来的代码块,例如函数体、循环体和条件语句体。let声明的变量具有以下特点:

  • 变量只能在声明它的代码块内访问,不能在其他代码块内访问。
  • 变量不能重复声明。
  • 变量可以被重新赋值。

以下代码演示了let的使用方式:

{
  let message = "Hello, world!";
  console.log(message); // 输出: Hello, world!
}

console.log(message); // 报错: ReferenceError: message is not defined

const:常量的声明方式

const也是ES6中引入的变量声明方式,它允许您声明常量。常量是指不能被重新赋值的变量。const声明的变量具有以下特点:

  • 变量只能声明一次,不能重复声明。
  • 变量必须在声明时初始化,不能在声明后重新赋值。
  • 变量可以在任何作用域内访问,包括全局作用域和局部作用域。

以下代码演示了const的使用方式:

const message = "Hello, world!";
console.log(message); // 输出: Hello, world!

message = "Goodbye, world!"; // 报错: TypeError: Assignment to constant variable.

var、let和const的比较

下表比较了var、let和const这三个关键字的异同:

特性 var let const
作用域 全局作用域和局部作用域 块级作用域 全局作用域和局部作用域
可重复声明
可重新赋值

结语

var、let和const是JavaScript中声明变量的三种方式,它们具有不同的特点和适用场景。var是最古老的变量声明方式,它允许您声明变量并赋予其值。let是ES6中引入的变量声明方式,它允许您声明块级作用域的变量。const也是ES6中引入的变量声明方式,它允许您声明常量。