这是我参与「第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指向的基本原则,垃圾回收等等。