【前端面经】JS 中 var、let、const 变量声明方式及其区别?

JS 中三种变量声明方式及其区别

三种变量声明方式及其区别

var、let、const 的对比

特性 var let const
函数作用域 √(变量在函数中声明时) not only not only
全局作用域 √(变量在函数外声明时) × ×
块级作用域 × √(变量声明的所在代码块) √(变量声明的所在代码块)
重新声明
重新赋值

const 的不可变性const 声明的变量必须初始化,且不能重新赋值。但是对于复杂数据类型(如对象),可以修改其中的内容。

变量的提升

  • var 的提升:变量被提升到作用域顶部并初始化;可以在声明之前访问 ,值为 undefined
  • let 的提升:变量被提升到作用域顶部但不初始化;不可以在声明之前访问 ,会报错 ReferenceError(称为暂时性死区,TDZ)
  • const 的提升:变量被提升到作用域顶部但不初始化;不可以在声明之前访问 ,会报错 ReferenceError(称为暂时性死区,TDZ)

暂时性死区的说明 :所谓暂时性死区,指的是在进入作用域直到变量声明被执行之前的这段时间内,变量是存在的但是无法被访问 ,任何访问都会导致 ReferenceError

相关推荐
kyriewen6 小时前
白宫直接给 OpenAI 下了限制令,GPT-5.6 不能随便放出来了
前端·javascript·面试
PedroQue997 小时前
Vite插件v0.2.6:架构优化与自动化升级
前端·vite
threerocks8 小时前
什么?我连 A2A、MCP 都没学会,现在又来了 AG-UI、A2UI.
前端·aigc·ai编程
牛奶9 小时前
如何自己写一个浏览器插件?
前端·chrome·浏览器
亿元程序员10 小时前
为什么Cocos都4.0了还有人用2.x?
前端
MomentYY10 小时前
AI 到底是“懂”,还是在“猜”?
前端·人工智能·ai编程
鹏毓网络科技10 小时前
Cursor Rules 文件配置实战:3 个隐藏参数让我每月少写 40% 样板代码
前端·github
没烦恼30110 小时前
无痕模式下 HTTP\-First 拦截引发的“页面刷新”误判
前端
文心快码BaiduComate10 小时前
从个人提效到组织提效:Comate辅助构建自我进化的AI研发系统
前端·程序员
hunterandroid10 小时前
Compose 状态管理:remember、rememberSaveable 与状态提升
前端