2024/4/24总结

js进阶

作用域

作用域分为全局作用域局部作用域

局部作用域

分为块级作用域 ( 就是使用 {} 包裹起来的代码称为代码块 )和函数作用域( 顾名思义就是函数包裹的部分 )

let 和 const 声明的常量会产生块级作用域 var不会产生块作用域

作用域链就是最底层的查找机制,其实就是就近原则。

垃圾回收机制

内存的生命周期

  • 内存分配 声明变量、函数、对象的时候,系统会自动分配内存
  • 内存使用 读写内存、也就是使用变量、函数等
  • 内存回收 使用完毕,由垃圾回收器自动回收

全局变量不会回收

局部变量会自动回收

内存泄漏 程序中分配的内存由于某种原因程序未释放或无法释放叫做内存泄漏

  • 栈:基本数据类型,由操纵系统自动分配函数的参数值,局部变量
  • 堆:复杂数据类型,由垃圾回收机制回收
算法说明:
  • 引用计数法

如果没有对象对它进行引用,那么就会被回收

缺点 :嵌套引用会出问题 ,如果俩个对象相互引用,垃圾回收器不会回收,从而导致内存泄漏。

  • 标记清除法

从根部定期扫描,凡是能到达的对象,都是还需要使用的,无法到达的标记为不再使用,并且进行回收

闭包

一个函数对周围状态的引用捆绑在一起,内层函数中访问到其外层函数的作用域

作用:封闭数据、提供操作,外部可以访问函数内部的变量

变量提升

它允许在变量声明之前即被访问(仅仅存在于 var 声明的变量)

变量在 var 声明之前被访问,变量的值为 undefined ,变量提升只存在当前作用域下。

函数也是可以先声明之前就被调用

函数表达式不能,会出问题

动态参数 arguments

是函数内部内置的伪数组变量,只存在函数中,作用是动态获取函数的实参。

剩余参数

...变量名字

... 是语法符号,置于最末函数形参之前,用于获取 多余 的实参

借助 ... 获取的剩余实参,是个真数组,开发中,提倡多使用 剩余参数

箭头函数的 this 不会创建自己的 this ,它只会从自己的作用域脸的上一层沿用 this

相关推荐
徐小夕4 分钟前
花了一周,3亿tokens,我开源了一款 Word 文档智能审查平台,文稿自动质检+可视化分析,告别低效人工审核
前端·算法·github
Wang's Blog7 分钟前
Go-Zero 项目开发22:用户群聊功能的实现与完善
开发语言·golang
a11177628 分钟前
坦克大战3D Three.js 3D (开源项目)
开发语言·javascript·3d
kyriewen1 小时前
别再乱用useEffect了——你写的10个里有8个不该存在
前端·javascript·react.js
Ivanqhz2 小时前
Rust &‘static str浅析
java·前端·javascript·rust
IT_陈寒2 小时前
SpringBoot这个分页坑,我踩了三天才爬出来
前端·人工智能·后端
颜酱2 小时前
05 | 召回前置准备:根据业务数据库生成各数据库(读取配置阶段)
前端·人工智能·后端
Wang's Blog2 小时前
Go-Zero项目开发24: 基于Bitmap实现群聊消息已读未读
开发语言·后端·golang
zandy10113 小时前
衡石 Agentic BI的ReAct 推理框架在 Agentic BI 中的工程化实践
前端·javascript·react.js
罗超驿3 小时前
JavaEE进阶之路:从Web架构原理到HTML标签全解析
前端·html·web·javaee