深入理解 JS | 青训营笔记

92 阅读2分钟

课程重点

  • JS的基本概念
  • JS的数据类型
  • 变量提升
  • 作用域
  • 闭包
  • 垃圾回收

课程内容

JS的基本概念

image.png JS是单线程的,动态、弱类型语言,面向对象、函数式,解释类语言,安全、性能差。
那什么是动态语言?

image.png

就拿Java做比较:Java中初始化变量:int num=10;不用看结果就知道num是int类型。而js中,let num需要赋值后才知道它是number还是string还是Boolean类型。

数据类型:

image.png 作用域
变量的可访问性和可见性
静态作用域,通过它就能够预测代码在执行过程中如何查找标识符 image.png 变量提升 image.png JS是怎么执行的 image.png 当JS引擎解析到可执行代码片段(通常是函数调用)的时候,就会先做一些执行前的准备工作,这个准备工作,就叫做执行上下文,也称执行环境

image.png

执行上下文可分为三种:全局、函数、Eval

全局执行上下文: 代码开始执行时就会创建,将它压入执行栈的栈底,每个生命周期内只有一份。
函数执行上下文: 当执行一个函数时,这个函数内的代码就会被编译,生成变量环境、词法环境等,当函数执行结束的时候执行环境从栈顶弹出

image.png 创建执行上下文的时候做了什么?
绑定This,创建词法环境,创建变量环境。 词法环境: 基于ECMAScript代码的词法嵌套结构来定义标识符和具体变量和函数的关联。一个词法环境由环境记录器和一个可能的引用外部词法环境的空值组成
变量环境: 变量环境和词法环境的一个不同就是前者被用来存储函数声明和变量绑定,而后者只用来存储var变量绑定
Outer: 指向外部变量环境的一个指针

JS的进阶知识点

闭包

image.png

This

image.png

垃圾回收

image.png