var是JavaScript中具有函数作用域、变量提升和可重复声明特性的早期变量声明关键字;它不具块级作用域,声明被提升至作用域顶部,允许多次同名声明但易降低可维护性。

在 JavaScript 中,var 是最早用于声明变量的关键字,它具有函数作用域、变量提升(hoisting)和可重复声明等特性。虽然现代开发更推荐使用 let 和 const,但理解 var 仍有助于阅读旧代码或处理特定兼容性场景。
基本语法:用 var 声明变量
使用 var 声明变量的格式很简单:
- var 变量名; —— 声明未赋值的变量,初始值为 undefined
- var 变量名 = 值; —— 声明并同时赋值
- var a = 1, b = "hello", c = true; —— 一行声明多个变量(用逗号分隔)
var 的作用域:函数作用域,不是块级作用域
var 声明的变量只受函数限制,不受 {}(如 if、for、while 等块)影响:
- 在函数内用 var 声明,变量仅在该函数中有效
- 在函数外(全局作用域)声明,变量会成为全局对象(如浏览器中的
window)的属性 - 在
if或for块中用 var 声明,变量仍可在块外访问
例如:
立即学习“Java免费学习笔记(深入)”;
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
变量提升(Hoisting):声明会被“提到”顶部
JavaScript 引擎会在执行前把所有 var 声明(不含赋值)移到当前作用域顶部:
- 这意味着你可以在声明前使用变量,但值是 undefined
- 赋值操作不会被提升,只有声明部分被提升
例如:
立即学习“Java免费学习笔记(深入)”;
console.log(a); // undefinedvar a = 5;
可重复声明:同一作用域下能多次用 var 声明同名变量
这是 var 独有的行为,let 和 const 会报错:
- var name = "Alice";
- var name = "Bob"; —— 合法,后一次赋值覆盖前一次
- 但注意:这容易引发意外覆盖,降低代码可维护性
不复杂但容易忽略,实际项目中建议优先使用 let 和 const,除非明确需要 var 的函数作用域或变量提升行为。

















