共计 537 个字符,预计需要花费 2 分钟才能阅读完成。
相关概念
- 编译器工作的三个阶段:
词法分析(间隔成一个个词法单元)、语法分析(根据嵌套规则生成语法树)、代码生成(将代码转换成机器指令并为变量分配内存)。
- 作用域:
就是根据变量名称存储和查找变量的一套规则。
- 作用域的作用:
一个是编译期间与编译器交互,将声明的变量创建到对应作用域下;另一个是代码执行期间与引擎交互,在对应的作用域查找变量值和对相应作用域下的变量进行赋值。
- 查找规则:
LHS(left-hand-side),LHS 可以理解为被赋值的变量应用的查询规则,RHS 可以被理解为取值的变量应用的查询规则。两者在查询不到结果时表现不一样,非严格模式下,LHS 会将查询不到的变量声明会全局变量,RHS 则会抛出异常。
作用域工作过程分析:
举例 var a = 2 涉及过程:
- 词法分析阶段:编译器碰到 var a 这类的声明会向作用域询问是否已存在该变量,然后生 成执行代码。
- 代码执行过程:引擎运行代码,进行赋值操作,赋值前会从当前作用域开始执行 ##LHS 查询(见查找规则)## 是否又 a 这个变量,如果没有抛出异常 Uncaught ReferenceError: a is not defined,如果有则进行赋值操作。
问题:JavaScript 为什么被设计成解释型语言?
自己想到原因是,解释型语言方便别人查看和复用。
正文完
发表至: javascript
2019-09-22