Day1
上课!
主题: 前端语言串讲 **课程时长:**50:59
内容大纲
- 前端语言的基本能力
- 前端语言的协作配合
- 你不知道的HTML
- 扩展分享
已经学习完了html+css+JavaScript,所以这三部分的讲解过了一遍视频,没做过多笔记。
JavaScript(10天被创造出来,属实有点牛)
JavaScript七大基本类型
- String
- Number
- Boolean
- Null
- Undefined
- Symbol
- Object
JavaScript是单线程的。
Microtask Queue:微任务队列
Macrotask Queue: 宏任务队列
Event Loop:事件循环
这一块地方老师好像讲的不太清楚,老师说先完成所有宏任务,再完成所有的微任务,微任务完成之后再完成宏任务(给我听傻了)
然后我去查阅了资料,得出结论:事件循环不断地从宏任务队列中选择任务执行,执行完当前的宏任务后,再检查微任务队列是否有任务需要执行,如果有,则依次执行所有的微任务,直到微任务队列为空。然后再选择下一个宏任务执行,周而复始,形成了一个循环。
JavaScript的执行机制涉及到异步任务的处理和事件循环机制。
当JavaScript代码执行时,会先执行主线程中的同步任务。如果遇到异步任务,例如定时器、网络请求、事件监听等,这些异步任务会被放入对应的任务队列中等待执行。
JavaScript引擎有两个主要的任务队列,即宏任务队列(Macrotask Queue)和微任务队列(Microtask Queue)。
宏任务队列(Macrotask Queue): 宏任务队列用于存放异步任务,它包括一些常见的任务类型,如定时器任务(setTimeout、setInterval)、网络请求、DOM事件等。 当主线程中的所有同步任务执行完毕后,JavaScript引擎会从宏任务队列中选择最早进入队列的任务,并执行它。
微任务队列(Microtask Queue): 微任务队列用于存放微任务,微任务是一些需要尽快执行的异步任务。常见的微任务包括Promise回调、MutationObserver回调等。当主线程中的所有同步任务执行完毕,并且没有微任务时,JavaScript引擎会从微任务队列中选择最早进入队列的任务,并执行它。 微任务的执行会在下一个宏任务之前完成。
事件循环: 事件循环是JavaScript引擎处理异步任务的机制。 它不断地从宏任务队列中选择任务执行,执行完当前的宏任务后,再检查微任务队列是否有任务需要执行,如果有,则依次执行所有的微任务,直到微任务队列为空。然后再选择下一个宏任务执行,周而复始,形成了一个循环。
简单来说,当主线程执行完同步任务后,会先执行微任务队列中的所有微任务,然后再执行宏任务队列中的一个宏任务。这个过程不断重复,形成了JavaScript的事件循环机制。
注意微任务的执行优先级比宏任务高,即微任务队列中的任务会优先执行。
下面这个图不错,可以参照这个去完善github个人介绍页的技术栈模块
希望青训营课程要是能有光标移动讲解就好了
对课程的建议
标题:前端语言串讲 - 掘金