JavaScript变量声明:var、let与const的核心区别

JavaScript变量声明:var、let与const的核心区别

在JavaScript的发展历程中,变量声明方式经历了从单一到多元的演变。ES6引入的letconst解决了var的诸多缺陷,成为现代JS开发的首选。本文将深入解析三者的核心差异。

1. 作用域差异

var仅支持函数作用域,而letconst支持块级作用域(以{}为边界)。

// var的函数作用域特性

function testVar() { if (true) { var name = "var"; } console.log(name); // 输出"var",if块内声明的变量可在函数内访问 }

// let的块级作用域特性

function testLet() { if (true) { let name = "let"; } console.log(name); // 报错:name is not defined }

2. 变量提升与暂时性死区

var存在变量提升,可在声明前访问(值为undefined);letconst虽有提升,但存在“暂时性死区”,声明前访问会报错。

console.log(varVar); // 输出undefined,var存在变量提升 var varVar = "test"; console.log(letVar); // 报错:Cannot access 'letVar' before initialization let letVar = "test";

3. 重复声明与赋值限制

var允许重复声明同一变量,letconst则禁止;const声明的变量不可重新赋值(但引用类型的属性可修改)。

4. 三者核心区别对比

特性varletconst
作用域 函数作用域 块级作用域 块级作用域
重复声明 允许 禁止 禁止
重新赋值 允许 允许 禁止
暂时性死区

5. 最佳实践

  • 优先使用const,仅在确需重新赋值时使用let
  • 避免使用var,减少作用域相关Bug
  • 声明引用类型变量(对象、数组)时,const仅保证引用不变,需注意属性修改风险
posted @ 2025-09-28 18:28  伤心木乃伊  阅读(16)  评论(0)    收藏  举报