JavaScript变量声明有var、let、const三种:var函数作用域、可重复声明、提升但赋值不提升;let块级作用域、不可重复声明、存在暂时性死区;const块级作用域、必须初始化且不可重新赋值,对象内部仍可修改;推荐默认用const,需重赋值时用let,避免var。
JavaScript 中变量声明主要有 var、let 和 const 三种方式,它们在作用域、提升(hoisting)、重复声明和可变性上存在关键区别。
var 声明:函数作用域 + 变量提升var 是 ES5 及之前唯一的方式,具有函数作用域(不是块级),且存在变量提升——声明会被“移动”到当前作用域顶部,但赋值不会。
undefined(而非 ReferenceError)let 引入于 ES6,提供真正的块级作用域(如 if、for、{} 内),且不会被提升到块顶部。
const 同样是 ES6 引入,也具块级作用域和 TDZ 行为,但声明时必须初始化,且不能再次赋值。
= 赋新值(对基本类型严格不可变;对对象/数组,其引用不可变,但内部属性/元素可修改)现代 JavaScript 开发中,推荐默认使用 const,仅在确实需要重新赋值时改用 let,避免使用 var(除非需兼容极老环境或有意利用其函数作用域特性)。