深入理解JavaScript | 青训营笔记

69 阅读3分钟

课程笔记5.png

这是我参与「第1届 前端训练营」笔记创作活动的第8天

一、重点内容介绍🎈

  • JavaScript的基本概念
  • JavaScript怎么执行的
  • JavaScript进阶

二、详细知识点🍗

2.1 JavaScript的基本概念

JavaScript 是一种脚本语言,是一种轻量级的编程语言。它是可以插入 HTML 页面的编程代码,在 JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行。

  • JS是单线程语言、属于弱类型的解释型语言
  • 主要数据类型:null、undefined、number、Boolean、symbol、bigint、字符串 对象:数组、函数、Date
    除了基本数据类型,JS 还有一种特殊的引用数据类型:函数。函数也是一种对象,可以像其他对象一样被传递、赋值和调用。
  • 作用域(变量的可访问性和可见性):全局作用域、函数作用域、块级作用域
    静态作用域:通过它就能够预测代码在执行过程中如何查找标识符 var——存在变量提升、function可以先访问再定义

2.2 JavaScript怎么执行的

JS执行流程:

  • JS引擎解析到可执行代码片段——会开始执行上下文

全局执行上下文:

  • 代码开始执行是就会创建,将他压执行栈的栈地,每个生命周期内只有一份

函数执行上下文:

  • 当执行一个函数时,这个函数内得代码会被编译,生成变量环境、词法环境等,当函数执行结束的时候该执行环境从栈顶弹出

2.3 JavaScript进阶

闭包

  • 如果引用闭包的函数是一个全局变量,那么闭包会一直存在直到页面关闭,但是如果这个闭包以后不再使用的话,就会造成内存泄漏。
  • 如果引用闭包的函数是一个局部变量,等函数销毁后,在下次JavaScript引擎执行垃圾会收拾,判断闭包这块内容如果已经不再被使用了,那么JavaScript引擎的垃圾回收器就会回收这块内存。

this指向的基本原则

  • 直接以函数形式调用,执行全局对象,一般是window。
  • 以对象方法形式被调用,执行调用方法的对象。
  • 以构造函数形式被调用,执行被创建出的实例。

垃圾回收

  • 分为新生代和老生代。
  • 新生代写入体积小的对象,采用标记、复制、翻转的方法进行垃圾回收。
  • 老生代则是写入体积较大或者从新生代晋升而来的数据,采用标记整理法回收。后续还引入了增量标记和并行垃圾回收等方法进行优化。

三、思考与总结💡

通过今天的学习,我了解了很多关于JavaScript的基本概念,JavaScript怎么执行的,以及JavaScript进阶的知识,包括闭包,this指向的基本原则,垃圾回收等等。