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

相关推荐
m0_5474866614 分钟前
《面向对象与Java程序设计》全套PPT课件2026
java·开发语言
杉氧16 分钟前
Flutter 跨平台多端适配与 Android/iOS 一键自动化打包发布
android·前端·flutter
障碍的枫子16 分钟前
xss和CSRF的攻击和防御
前端·xss·csrf
星恒随风18 分钟前
C++ 红黑树封装(二):迭代器、const_iterator 与 operator[] 完整实现 mymap 和 myset
开发语言·c++·状态模式
用户9210802628624 分钟前
3. 给 Bubble 新增一个 Agent Variant
前端
jason成都27 分钟前
ignav-next|Java 层封装 GNSS/INS 组合导航框架,隔离 RTKLIB 与 INS 内核,双模块独立演进、最小侵入
java·开发语言
抓不住时间的沙27 分钟前
butterfly主题美化,打造属于自己的个性博客
java·开发语言·前端·javascript·node.js·github
kyriewen38 分钟前
前端切图仔被 AI 新闻淹死的第 N 天,我用 TRAE Work 定时任务救了自己
前端·人工智能·trae
京东云开发者39 分钟前
【全栈实践】第一个 AI Agent 项目:从零搭建 AI 音频创作助手(高级篇)
前端·agent·音视频开发
MarkHD41 分钟前
Stable Diffusion入门第19-20天:保存与分享你的工作流——第一阶段收官,从“能用”到“可复用”
java·开发语言·stable diffusion