js的基本概念
单线程
动态、弱类型
面向对象、函数式
解释类语言、JIT
安全、性能差
js复杂的数据类型复制的是地址 简单的数 据类型是值
js是如何执行的
当js引擎解析到可执行代码片段(通常是函数调用)的时候,就会先做一些执行前的准备工作,这个准备工作就叫执行上下文(exeution context)简称EC,也叫执行环境
全局执行上下文:代码开始执行时就会创建,将他执行栈的每个生命周期只有一份
函数执行上下文:当执行一个函数,这个函数内的代码就会被编译,生成环境变量,当函数执行结束的时候就从执行环境栈顶弹出,
词法环境
变量环境
普通函数的this指向window
对象调用指向对象
先赋值在调用,看调用的地方
创建临时对象
将this指向临时对象
执行构造函数
返回临时对象
js进阶 垃圾回收
事件循环
只有一个线程执行主任务
先去执行微任务再去执行宏任务事件
js是单线程 但是在Render进程里面有多个线程
js线程和GUI线程互斥,执行大的计算任务会导致页面卡顿。
基础数据类型存在栈上,复杂类型存在堆上
const,let 没有变量提升,提前使用会报错
js也有编译过程,执行之前会生成执行上下文
一个执行上下文包括变量环境、词法环境、this,
变量环境里面有一个指向外部函数的执行上下文指针,形成作用域链
全局执行上下文只有一份
this 和执行上下文绑定
感想
学习内容算是了解,清楚js执行原理,懂得事件循环时先执行微任务再去执行宏任务,了解更多的js知识,学习了闭包,垃圾回收概念