JavaScript变量声明:var的奥秘

在 JavaScript 中,var 是最传统的变量声明关键字。使用 var 声明的变量有几个特点:

  1. 函数作用域 :var 声明的变量具有函数作用域,这意味着变量只能在声明它的函数内部访问。如果在函数外部声明,则为全局作用域。

  2. 变量提升 :var 声明的变量会发生变量提升(hoisting),这意味着变量的声明会被提升到当前作用域的顶部,但是初始化不会被提升。因此,你可以在声明之前使用变量,但它会被初始化为 undefined。

  3. 重复声明 :使用 var 可以在同一作用域内重复声明同一个变量,后面的声明会覆盖前面的声明。

  4. 不限制声明次数 :你可以多次使用 var 关键字声明同一个变量,每次声明都会创建一个新的变量。

下面是一个使用 var 声明变量的例子:

javascript 复制代码
function myFunction() {
  var x = 10;
  if (true) {
    var x = 20; // 重复声明,覆盖外层的 x
    console.log(x); // 输出 20
  }
  console.log(x); // 输出 20,内层的声明覆盖了外层的声明
}

myFunction();

在上面的例子中,尽管 x 被声明了两次,但由于变量提升,实际上在函数内部只有一个 x 变量,其值在条件语句中被重新赋值为 20。

随着 ES6 的引入,推荐使用 let 和 const 来声明变量,因为它们提供了块作用域和更严格的限制,有助于避免变量提升和重复声明等问题。

相关推荐
用户278860728567几秒前
别把 AI 查询结果只塞进聊天框:SessionView 与业务页面接线
前端
程序员鱼皮1 分钟前
Personal Agent 是什么?为什么大厂都抢着做?连 DeepSeek Bot 都来了。。
前端·后端·ai编程
geovindu9 分钟前
rust: Chain of Responsibility Pattern
开发语言·后端·设计模式·rust·责任链模式·行为模式
m0_587383009 分钟前
碰碰好评卡功能落地全流程实战指南 附核心逻辑与常见问题解决方案
java·前端·数据库·后端·struts·需求分析
子轩学长说10 分钟前
Workbuddy独立文件浏览器新上线,彻底告别WPS和office全家桶~
前端
nyaomaru11 分钟前
如何用 Jev 从 PR 中提取 “Why” 并写入 CHANGELOG?🤔
前端·typescript
Shirley~~11 分钟前
从0搭建一个3D立体场景:光影与交互全解析
前端·3d
阿里嘎多学长12 分钟前
2026-10-14 GitHub 热点项目精选
开发语言·程序员·github·代码托管
迪康coolmu12 分钟前
迪康Defender网络准入控制系统落地实战:部署、配置与问题排查记录
运维·开发语言·网络·经验分享·php
Dovis(誓平步青云)12 分钟前
一年1956亿行:智能电表场景下的时序数据存储实践
运维·前端·自动化·音视频·prometheus