书名:《你不知道的JavaScript(上卷)》
作者:Kyle Simpson
译者:赵望野 , 梁杰
1.1 编译原理
在传统的编译语言的流程中,程序中的一段源代码在执行之前会经历以下三个步骤:
- 词法分析
语法分析
代码生成
1.2 理解作用域
理解引擎、编译器、作用域
编译器如何处理 var a = 2;
总结:引擎在执行赋值操作之前会询问作用域中是否含有a这个变量,有则赋值,无则抛出异常,对编译器来说,遇到var a则会先询问作用域中是否有a,是则继续,无则让作用域在当前作用域的集合中声明一个新的变量,并命名为a。
准确理解LHS查询和RHS查询
LHS指的是赋值操作的目标是谁
RHS指的是赋值操作的源头
1.3 作用域嵌套
作用域有向上查找的规则
1.4 异常
区分LHS查询和RHS查询是一件很重要的事情
- RHS查询如果从下到上一直找到全局作用域都找不到的情况下,会抛出异常。
- LHS查询如果从下到上一直找到全局作用域都找不到的情况下,全局作用域就会创建一个具有该名称的变量。(非严格模式下)
1.5 小结
作用域的概念
作用域是一套规则,用于确定在何处以及如何查找变量。