深入理解JS|青训营笔记

70 阅读2分钟

JS的基本概念 1.单线程 2.动态、弱类型 3.面向对象、函数式 4.解释类语言、JIT 5.安全、性能差 ……

JS基本概念——数据类型 1.对象{数组、函数……} 2.基础类型{字符串、undefined、数字、null、symbol、bigInt、布尔}

JS基本概念——作用域 1.变量的可访问性和可见性 2.静态作用域,通过它就能够预测代码在执行过程中查找标识符,全局作用域、函数作用域、块级作用域

JS的基本概念——变量提升 1.var有变量提升 2.let、const没有变量提升,提前访问会报错 3.function函数可以先调用再定义 4.赋值给变量的函数无法提前调用

JS执行逻辑 1.全局执行上下文:代码开始执行时就会创建,将他压执行栈的栈底,每个生命周期内只有一份 2.函数执行上下文:当执行一个函数时,这个函数内的代码会被编译,生成变量环境、词法环境等,当函数执行结束的时候该执行环境从栈顶弹出 3.词法环境:基于ECMAscript代码的词法嵌套结构来定义标识符和具体变量和函数的关联。一个词法环境由环境记录器和一个可能的引用外部词法环境的空值组成 4.变量环境:变量环境和词法环境的一个不同就是前者被用来存储函数声明和变量(let和const)绑定,而后者只用来存储var变量绑定 5.Outer:指向外部变量环境的一个指针

ESP是记录当前执行状态的指针

JS的进阶知识点——闭包 通常,如果引用闭包的函数是一个全局变量,那么闭包会一直存在直到页面关闭;但如果这个闭包以后不再使用的话,就会造成内存泄漏。 如果引用闭包的函数是个局部变量,等函数销毁后,在下次JavaScript引擎执行垃圾回收时,判断闭包这个内容如果已经不再被使用了,那么JavaScript引擎的垃圾回收器就会回收这块内存

JS的进阶知识点 普通函数的this指向windows 1.对象调用指向对象 2.先赋值再调用,看调用的地方

1.创建临时对象 2.将this指向临时对象 3.执行构造函数 4.返回临时对象

JS的进阶知识点——垃圾回收