深入理解JS| 青训营笔记

61 阅读2分钟

js的基本概念

单线程

动态、弱类型

面向对象、函数式

解释类语言、JIT

安全、性能差

js复杂的数据类型复制的是地址 简单的数 据类型是值

js是如何执行的

当js引擎解析到可执行代码片段(通常是函数调用)的时候,就会先做一些执行前的准备工作,这个准备工作就叫执行上下文(exeution context)简称EC,也叫执行环境

全局执行上下文:代码开始执行时就会创建,将他执行栈的每个生命周期只有一份

函数执行上下文:当执行一个函数,这个函数内的代码就会被编译,生成环境变量,当函数执行结束的时候就从执行环境栈顶弹出,

词法环境

变量环境

普通函数的this指向window

对象调用指向对象

先赋值在调用,看调用的地方

创建临时对象

将this指向临时对象

执行构造函数

返回临时对象

js进阶 垃圾回收

事件循环

只有一个线程执行主任务

先去执行微任务再去执行宏任务事件

js是单线程 但是在Render进程里面有多个线程

js线程和GUI线程互斥,执行大的计算任务会导致页面卡顿。

基础数据类型存在栈上,复杂类型存在堆上

const,let 没有变量提升,提前使用会报错

js也有编译过程,执行之前会生成执行上下文

一个执行上下文包括变量环境、词法环境、this,

变量环境里面有一个指向外部函数的执行上下文指针,形成作用域链

全局执行上下文只有一份

this 和执行上下文绑定

感想

学习内容算是了解,清楚js执行原理,懂得事件循环时先执行微任务再去执行宏任务,了解更多的js知识,学习了闭包,垃圾回收概念