当前位置: 首页 > news >正文

var、let、const

注:给自己写的复习和面试的笔记,简要记录可能不完善,复习够用

一、var的核心特性

1>、作用域:函数作用域或全局作用域

痛点:缺乏块级作用域,if块内的变量会泄露到外部,for循环中的变量会泄露到外部

2>、变量提升:声明被提升,初始化为undefined

痛点:声明前访问不报错,值为undefined;违反代码直觉易导致bug

3>、重复声明:允许

4>\可变性:可以重新赋值

function varExample(){ console.log(a); //变量提升 值为undefined var a = 10; console.log(a);//赋值后值为10 if(true){ var a = 20;//覆盖了外层的a console.log(a);//值为20 } console.log(a);//值被if块修改输出20 }

二、let:ES6的变量声明,可以理解为升级版的var

1>、作用域:块级作用域

2>、暂时性死区(TDZ):声明前无法访问

3>、重复声明:同一作用域内不允许

4>、可变性:可以重新赋值

function letExample(){ console.log(a);//报错:变量声明前访问:暂时性死区(TDZ) let a = 10 ; console.log(a);//输出 10 if (true){ let a = 20 ;//此时的a为if块中的新变量 console.log(a);//输出 20 } console.log(a);//输出 10 不受if块的影响 }

三、const:声明即永恒

1>、作用域:块级作用域

2>、暂时性死区(TDZ):声明前无法访问

3>、可变性:不能重新赋值

4>、核心:保证变量引用的不变性

const obj = {name: 'Meng'}; //修改对象内的属性 obj.name = 'Xia' console.log(obj.name);//输出 'Xia' //将obj指向一个新对象 不允许 obj = {};//TypeError

四、关键点一暂时性死区(TDZ)

适用于let和const

区域:从作用域{开始,到变量声明let/const 结束

行为在此区域内访问变量抛出ReferenceError

关键点二:全局对象

var:在全局作用域声明,会成为window的属性

let/const:不会成为window的属性

关键点三、开发最佳实践

1、优先使用const:增强代码可预测性,避免意外修改

2、当变量需要重新赋值时使用let:循环计数器、状态切换

3、尽量不用var

五、面试回答

1、作用域

var:函数作用域

let/const:块级作用域:解决var在if/for中的变量泄露问题

2、提升与TDZ

var:变量提升,声明前可访问,值为undefined

let/const:存在暂时性死区,声明前访问抛出ReferenceError

3、赋值与声明

var:可重复声明,可重新赋值

let:不可重复声明,可重新赋值

const:不可重复声明,不可重新赋值

const保证引用类型的不变性内部属性可变

http://www.jsqmd.com/news/1153581/

相关文章:

  • Translumo终极指南:如何免费实现游戏、视频的实时屏幕翻译
  • 微信小程序逆向工程实战:从抓包到反编译的完整指南
  • 工业信号干扰解决方案:FOD4216光耦与PIC18F26K80应用
  • 如何快速获取蓝奏云直链:终极解析指南
  • SPT-AKI存档编辑器:3分钟快速上手终极指南
  • Magpie窗口超分辨率工具:5个技巧让老旧软件焕发新生
  • Testsigma GenAI驱动测试自动化平台:架构演进与生产就绪解决方案
  • 单北斗GNSS变形监测在桥梁与地质灾害中的应用与技术发展
  • 5分钟完成Windows和Office永久激活:KMS_VL_ALL_AIO智能脚本终极指南
  • 华为Auth-HTTP Server 1.0 资产测绘与风险排查:FOFA语法与2类敏感文件定位
  • 5个简单步骤掌握Meshroom:免费3D建模神器的完整使用指南 [特殊字符]
  • 评判代码质量的终极标尺:高层语言只是表象,汇编才是硬件真实终审标准
  • 终极免费3D建模革命:如何用Meshroom将普通照片变专业三维模型
  • 告别模拟器:APK安装器让安卓应用在Windows上原生运行
  • CrysTBox软件安装步骤(附安装包)TEM数据分析软件 超详细下载安装教程
  • Focal Loss 与 Class-Balanced Loss 实战对比:长尾分类任务 mAP 提升 3.5% 的关键
  • 完整解决方案:高效部署Ncorr 2D数字图像相关分析软件的专业配置指南
  • TensorFlow 2.x 实现 DDQN:解决推荐系统过估计,10 个训练周期 Loss 降至 0.05
  • 抖音批量下载终极指南:一站式智能内容管理方案
  • 在Cortex-M上跑一个轻量级神经网络,比想象中简单
  • Remix IDE:浏览器里的 Solidity 开发环境,免配置直接上手
  • 深度解析AKShare金融数据获取引擎的异步处理机制与多源融合架构
  • 基于智能代理技术的跨平台资源嗅探工具:重新定义网络内容获取新范式
  • 终极CS2物品管理指南:3分钟掌握智能存储单元批量转移技巧
  • 3分钟搞定!零基础也能用的浏览器视频下载神器完整指南
  • PyQt6中文教程:7天快速掌握Python桌面应用开发终极指南
  • 如何用留痕工具永久保存微信聊天记录:个人AI训练数据终极指南
  • 智读致用|《思辨与立场》07|你说不清自己是怎么得出那个结论的?——把思维拆成零件,一看就明白问题在哪
  • 171、print 调试的终结:为什么 pdb 比 print 快 10 倍定位问题
  • 从零掌握Codex:AI代码生成工具接入、应用与本地化实践