返回

一文剖析 var、let、const 的区别:JavaScript中的变量声明

前端

在 JavaScript 中,我们可以使用 var、let 和 const 声明变量。这三种具有不同的作用域和赋值规则,了解它们的差异对于编写健壮可靠的代码非常重要。

var 关键字

var 关键字是 JavaScript 中最传统的变量声明方式。使用 var 声明的变量具有全局作用域或函数作用域。这意味着,在整个程序或函数中都可以访问 var 声明的变量。

var myVar = "Hello, world!";

function myFunction() {
  var myOtherVar = "I'm inside a function!";
}

console.log(myVar); // "Hello, world!"
console.log(myOtherVar); // ReferenceError: myOtherVar is not defined

在上面的示例中,myVar 声明为全局变量,因此可以在程序的任何位置访问。myOtherVar 声明为局部变量,因此只能在 myFunction 函数内访问。

let 关键字

let 关键字是 ES6 中引入的新变量声明方式。let 声明的变量具有块级作用域。这意味着,let 声明的变量只能在声明所在的块内使用。

let myVar = "Hello, world!";

{
  let myOtherVar = "I'm inside a block!";
}

console.log(myVar); // "Hello, world!"
console.log(myOtherVar); // ReferenceError: myOtherVar is not defined

在上面的示例中,myVar 声明为块级变量,因此只能在声明所在的块内访问。myOtherVar 也声明为块级变量,因此只能在声明所在的块内访问。

const 关键字

const 关键字也是 ES6 中引入的新变量声明方式。const 声明的变量具有块级作用域,并且值一旦确定就不能改变。

const myVar = "Hello, world!";

{
  const myOtherVar = "I'm inside a block!";
}

console.log(myVar); // "Hello, world!"
console.log(myOtherVar); // ReferenceError: myOtherVar is not defined

myVar = "Goodbye, world!"; // TypeError: Assignment to constant variable.

在上面的示例中,myVar 声明为常量,因此值一旦确定就不能改变。myOtherVar 也声明为常量,因此值一旦确定就不能改变。

总结

关键字 作用域 赋值
var 全局或函数 可以重新赋值
let 块级 可以重新赋值
const 块级 不能重新赋值

何时使用 var、let 和 const

在 JavaScript 中,使用 var、let 和 const 声明变量时,应遵循以下原则:

  • 尽量使用 let 和 const,因为它们具有更严格的作用域和赋值规则,可以防止意外的变量重新赋值。
  • 仅在需要全局变量或函数级变量时才使用 var。
  • 使用 const 声明不变的值,例如常量或枚举。
  • 使用 let 声明可能发生变化的值,例如循环变量或临时变量。

结论

var、let 和 const 是 JavaScript 中声明变量的关键字,它们之间的区别主要在于作用域和变量赋值。var 声明的变量具有全局作用域或函数作用域,let 和 const 声明的变量具有块级作用域。let 和 const 声明的变量只能在声明所在的块内使用,而 var 声明的变量可以在声明所在的块内以及块外使用。let 声明的变量可以重新赋值,而 const 声明的变量的值一旦确定就不能改变。