JS的基本概念
单线程
动态、弱类型面向对象、函数式解释类语言、JIT安全、性能差
动态语言(弱类型语言)是运行时才确定数据类型的语言,变量在使用之前无需申明类型
const company ="Bytedance'
静态语言(强类型语言)是编译时变量的数据类型就需要确定的语言
String company =‘Bytedance' ;
JS的基本概念-作用域变量的可访问性和可见性
静态作用域,通过它就能够预测代码在执行过程中如何查找标识符
JS的基本概念-变量提升
var有变量提升
let、const没有变量提升,提前访问会报错function函数可以先调用再定义赋值给变量的函数无法提前调用
JS是怎么执行的
JS是怎么执行的
当JS引擎解析到可执行代码片段(通常是函数调用)的时候,就会先做一些执行前的准备工作,这个准备工作,就叫做“执行上下文(execution context简称EC ) ",也叫执行环境
·全局执行上下文:代码开始执行时就会创建,将他压执行栈的栈底,每个
生命周期内只有一份
函数执行上下文:当执行一个函数时,这个函数内的代码会被编译,生成变量环境、词法环境等,当函数执行结束的时候该执行环境从栈顶弹出
·词法环境:基于ECMAScript 代码的词法嵌套结构来定义标识符和具体变量和函数的关联。一个词法环境由环境记录器和一个可能的引用外部词法环境的空值组成
变量环境:变量环境和词法环境的一个不同就是前者被用来存储函数声明和变量(let和const)绑定,而后者只用来存储var变量绑定
.Outer:指向外部变量环境的一个指针
普通函数的this指向window 1.对象调用指向对象 2.先赋值再调用,看调用的地方 1.创建临时对象 2.将this指向临时对象3.执行构造函数 4.返回临时对象
JS的进阶知识点-垃圾回收
课程总结
1.JS是单线程的,但是Render进程里面有多个线程
2.JS线程和GUI线程互斥,执行大的计算任务会导致页面卡顿
3.基础数据类型存在栈上,复杂数据类型存在堆上
4. const、let没有变量提升,提前使用会报错
5. 5.JS也有编译的过程,执行之前会生成执行上下文
6. 6.一个执行上下文包括变量环境、词法环境、this
7.变量环境里面有,一个指向外部函数执行上下文的指针,形成了作用域链8.全局执行上下文只有一份
9. this和执行上下文绑定