这本书主要有两部分内容
- 作用域和闭包
- this 和原型对象
之前看过一部分,这次再看一遍顺便整理笔记。
作用域是什么
作用域是一套规则,用来管理引擎如何查找变量。
引擎查找变量的两种方式
- LHS 查询 (查找变量的引用,赋值操作的目标)
- RHS 查询(查找变量的值)
作用域的分类
- 全局作用域
- 函数作用域
- 块作用域
作用域嵌套
JavaScript 是一门编译语言。但与传统的编译语言不通,它不是提前编译的,编译结果也不能在系统中到处移植。
传统的解释和编译
解释执行:每次运行前解释器解释执行。
编译执行:编译成机器语言保存后,一次编译多次运行。
传统的编译步骤
- 分词/词法分析 将代码分解成词法单元 var a = 2; => var、a、=、2、;
- 解析/语法分析 转换成由元素逐级嵌套所组成的代表程序语法结构的树。抽象语法书(AST)
- 代码生成 将 AST 转换为可执行代码
JavaScript 在执行前都要进行编译(通常就在执行前)
作用域
作用域嵌套
词法作用域
函数作用域
块作用域