news 2026/7/8 8:01:09

JavaScript 变量声明:var /let/const 完整对比

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JavaScript 变量声明:var /let/const 完整对比

前端必考点:var、let、const 作用域、变量提升与使用场景

前言

在 JavaScript 中,varletconst是三种声明变量的关键字,var为 ES5 旧语法,letconst是 ES6 新增。很多开发新手分不清三者作用域、变量提升、重复声明规则,日常开发频繁出现变量污染、报错、常量被篡改等问题。本文从作用域、变量提升、重复声明、赋值规则、使用场景五大维度完整对比,附带实操案例,看完彻底分清三者差异。

一、作用域差异

1. var:函数作用域,无块级作用域

var仅区分函数,if、for、while 等代码块不会限制 var 变量,块内声明可在块外访问,极易造成全局变量污染。

if(true){ var a = 10 } console.log(a) // 10,块外可访问 function fn(){ var b = 20 } console.log(b) // 报错,函数外无法访问

2. let /const:块级作用域

letconst拥有块级作用域({}包裹区域),if、for、循环、判断块内声明,块外无法读取,有效隔离变量。

if(true){ let c = 30 const d = 40 } console.log(c) // 报错 console.log(d) // 报错

二、变量提升

1. var:存在变量提升,默认值 undefined

JS 执行时会把 var 声明提升到当前作用域顶部,声明前访问不会报错,返回undefined

console.log(num) // undefined var num = 100

2. let /const:存在提升,但有暂时性死区

letconst同样会提升,但在声明代码前属于暂时性死区,访问直接抛出报错,杜绝先使用后定义的不规范写法。

console.log(x) // Uncaught ReferenceError let x = 200

三、重复声明规则

  1. var:允许同一作用域重复声明,不会报错,会覆盖原有值
var m = 1 var m = 2 console.log(m) // 2

2. let /const:同一作用域禁止重复声明,直接报错

let n = 1 let n = 2 // 报错

四、赋值与修改规则(let 和 const 最大区别)

1. var、let:可重复修改赋值

声明后能多次重新赋值,变量值可变:

let age = 18 age = 20 // 合法

2. const:常量,声明时必须赋值,不可直接重写

  • 声明时必须初始化,不能只声明不赋值
  • 基础数据类型(数字、字符串、布尔)无法修改
  • 引用类型(数组、对象)地址不变即可修改内部属性
// 错误写法 const name; // 基础类型不可改 const PI = 3.14 PI = 3.1415 // 报错 // 对象/数组可修改内部数据 const arr = [1,2,3] arr.push(4) // 合法,数组引用地址未变

五、总结

  1. 区分作用域:var 只有函数作用域,let/const 有块级作用域;
  2. 区分提升:var 无暂时性死区,let/const 有 TDZ,先使用直接报错;
  3. 区分修改:let 可反复赋值,const 为常量,基础类型不可修改;
  4. 开发规范:const > let > var,新项目不再使用 var。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/8 7:58:48

3分钟解锁九大网盘:告别下载限速的智能直链神器

3分钟解锁九大网盘:告别下载限速的智能直链神器 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 /…

作者头像 李华
网站建设 2026/7/8 7:58:43

可研PPT制作指南:从框架到呈现,轻松搞定项目论证

想做一份专业的可研PPT却无从下手?本文分享从框架搭建、内容提炼到设计排版的全流程教程,还有AI工具辅助,让你快速搞定项目可行性研究汇报。 引言 做可行性研究报告的PPT,真是让人头大。明明word版的可研报告都写好了,…

作者头像 李华
网站建设 2026/7/8 7:58:10

【单片机毕业设计】基于 STM32/51 单片机的多坑位智能公厕消毒监测控制系统设计与实现,带语音提醒的单片机公厕多工位智能监测设备研发(021801)

文章目录20 个相关毕业设计备选题目项目研究背景摘要总体方案核心功能一、核心管控功能二、环境与时间辅助调控功能三、人机交互与参数配置基础功能四、无线远程拓展功能技术路线项目演示关于我们项目案例源码获取博主介绍:✌️码农一枚 ,专注于大学生项…

作者头像 李华
网站建设 2026/7/8 7:54:39

薄膜开关选型避坑指南

做硬件产品开发的朋友应该都有体会,整机方案定了,电路板画完了,结构也差不多了,结果到了面板交互这一环,才发现薄膜开关这个"小零件"其实藏着不少门道。去年我们团队给一家做便携式血氧仪的客户做面板方案&a…

作者头像 李华
网站建设 2026/7/8 7:53:57

如何用LinkSwift解锁九大网盘真实下载链接:终极用户指南

如何用LinkSwift解锁九大网盘真实下载链接:终极用户指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天…

作者头像 李华