返回

var、let和const的区别,开发者的选择指南

前端

var、let 和 const 的区别

特性 var let const
声明方式 var <variable_name>; let <variable_name>; const <variable_name> = <value>;
作用域 全局或局部 局部 全局或局部
变量提升 存在 不存在 不存在
重新声明 允许 不允许 不允许
重新赋值 允许 允许 不允许
暂时死区 不存在 存在 存在

var

  • var 用来声明变量,不限定作用域。
  • var 声明的变量可以在任何地方访问,包括函数内部和函数外部。
  • var 声明的变量存在变量提升,这意味着在使用变量之前,必须先声明变量。
  • var 声明的变量可以被重复声明。
  • var 声明的变量可以被重新赋值。

let

  • let 关键字用来声明变量,限定作用域。
  • let 声明的变量只能在声明所在的代码块内访问。
  • let 声明的变量不存在变量提升,这意味着在使用变量之前,必须先声明变量。
  • let 声明的变量不能被重复声明。
  • let 声明的变量可以被重新赋值。

const

  • const 关键字用来声明常量,限定作用域。
  • const 声明的常量只能在声明所在的代码块内访问。
  • const 声明的常量不存在变量提升,这意味着在使用常量之前,必须先声明常量。
  • const 声明的常量不能被重复声明。
  • const 声明的常量不能被重新赋值。

开发者的选择指南

  • 如果需要在函数内部和函数外部都可以访问变量,可以使用 var
  • 如果需要在函数内部声明变量,可以使用 let
  • 如果需要在函数内部声明常量,可以使用 const

示例

// 全局变量
var global_variable = 10;

// 函数内部局部变量
function foo() {
  var local_variable = 20;

  // 块儿级局部变量
  if (true) {
    let block_level_variable = 30;
  }

  // 常量
  const constant = 40;
}

// 访问全局变量
console.log(global_variable); // 10

// 访问函数内部局部变量
console.log(local_variable); // ReferenceError: local_variable is not defined

// 访问块儿级局部变量
console.log(block_level_variable); // ReferenceError: block_level_variable is not defined

// 访问常量
console.log(constant); // 40

结论

varletconst 是 JavaScript 中三种不同的变量声明方式,它们各有不同的特性和用途。在实际开发中,开发者需要根据具体情况选择合适的变量声明方式。