【前端面经】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

相关推荐
j7~3 分钟前
【C++】STL--string类--拆析解剖string类的实现以及string类的底层详解(2)
开发语言·c++·浅拷贝·深拷贝·string类的实现·string拷贝构造·string赋值重载
an317423 分钟前
使用 LangGraph + DeepSeek 构建 AI 面试官:状态图设计与实践
前端·ai编程
代码不加糖4 分钟前
MessageChannel是什么,有什么使用场景?
前端·javascript
小小龙学IT8 分钟前
HTMX:让 HTML 重新成为前端核心的超轻量动态交互库
前端·html·交互
星栈8 分钟前
写 Makepad Demo 不难,难的是把它写成项目
前端·rust
用户059540174469 分钟前
localStorage清除策略踩坑实录:一个过期的token让我排查了3小时
前端·css
Nanachi11 分钟前
跨框架的前端源码定位,再加上点LLM
前端
程序员二叉12 分钟前
【JUC】AQS底层深度拆解|独占/共享模式|队列原理全详解
java·开发语言·面试·juc
踏着七彩祥云的小丑14 分钟前
Go 学习第6天:结构体 + 切片 + range遍历
开发语言·学习·golang·go
读书札记202217 分钟前
Qt中windeployqt.exe工具的使用:解决使用CMake创建的项目点击exe文件后系统提示0xc000007b的问题
开发语言·qt