2024/4/24总结

js进阶

作用域

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

局部作用域

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

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

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

垃圾回收机制

内存的生命周期

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

全局变量不会回收

局部变量会自动回收

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

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

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

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

  • 标记清除法

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

闭包

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

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

变量提升

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

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

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

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

动态参数 arguments

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

剩余参数

...变量名字

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

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

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

相关推荐
F2E_Zhangmo15 小时前
基于cornerstone3D的dicom影像浏览器 第三章 拖拽seriesItem至displayer上显示第一张dicom
前端·javascript·cornerstone·cornerstone3d·cornerstonejs
坐吃山猪17 小时前
SpringBoot01-配置文件
java·开发语言
晚风(●•σ )18 小时前
C++语言程序设计——06 字符串
开发语言·c++
我叫汪枫18 小时前
《Java餐厅的待客之道:BIO, NIO, AIO三种服务模式的进化》
java·开发语言·nio
Nicole-----18 小时前
Python - Union联合类型注解
开发语言·python
晚云与城18 小时前
今日分享:C++ -- list 容器
开发语言·c++
兰雪簪轩18 小时前
分布式通信平台测试报告
开发语言·网络·c++·网络协议·测试报告
FPGAI19 小时前
Qt编程之信号与槽
开发语言·qt
Swift社区19 小时前
从 JDK 1.8 切换到 JDK 21 时遇到 NoProviderFoundException 该如何解决?
java·开发语言
0wioiw020 小时前
Go基础(④指针)
开发语言·后端·golang