青训营 x 训练营笔记2.3——深入理解 JS

86 阅读3分钟

课程介绍

本课程主要面向刚刚入门的前端同学,主要讲述了JS的整体发展及一些比较重要的知识。其中通过一些简单的代码讲述了变量提升、JS的数据是怎么存储的、基础数据类型和复杂数据类型的区别等一些基础知识,也讲解了JS的执行、闭包、垃圾回收等一些稍微进阶一些的知识。

课程重点

  • JS的基本概念
  • JS的数据类型
  • 变量提升
  • 作用域
  • 闭包
  • 垃圾回收

image.png

image.png

闭包

image.png

闭包(Closure)是指在一个函数内部定义的函数可以访问该函数的内部变量,并将该函数及其内部变量绑定在一起形成的一个实体。在 JavaScript 中,闭包常常用于封装变量、实现模块化、延迟执行等场景。

当一个函数执行完毕后,其内部作用域中的变量通常会被销毁。但是如果一个内部函数仍然有对这些变量的引用,那么这些变量就不会被销毁,它们会和这个内部函数一起形成一个闭包。通过闭包,内部函数可以访问外部函数作用域中的变量,并且可以在外部函数执行完成后继续使用这些变量。

闭包的应用非常广泛,常见的场景包括实现私有变量、实现高阶函数、实现异步编程、实现记忆化等。常见的案例包括函数柯里化、函数节流、函数防抖等。

垃圾回收

image.png JavaScript 垃圾回收是指 JavaScript 引擎自动管理内存的过程,通过检测不再使用的变量、对象和函数等,回收它们所占用的内存空间,从而保证系统运行的稳定性。

JavaScript 的垃圾回收机制主要是基于“标记清除”和“引用计数”两种算法实现的。其中,“标记清除”算法通过标记所有在内存中活跃的对象,然后清除未被标记的对象,来回收内存;“引用计数”算法则通过记录每个对象被引用的次数,当其引用次数为 0 时就将其回收。

具体来说,在 JavaScript 中,当一个变量、对象或函数不再被引用时,它就成为了垃圾。垃圾回收器会自动扫描内存中的对象,标记那些还在使用的对象,删除其他的对象,并释放它们占用的内存空间。这个过程是自动进行的,程序员不需要手工干预。

需要注意的是,由于 JavaScript 的垃圾回收机制是自动的,因此在编写代码时要特别注意避免内存泄漏和性能问题,例如尽量避免创建大量临时对象、及时释放不再使用的对象等。


image.png 文章仅为个人学习笔记,如有错误,欢迎指正。下期见🔥