作用域之什么是作用域

46次阅读

共计 537 个字符,预计需要花费 2 分钟才能阅读完成。

相关概念

  • 编译器工作的三个阶段:

词法分析(间隔成一个个词法单元)、语法分析(根据嵌套规则生成语法树)、代码生成(将代码转换成机器指令并为变量分配内存)。

  • 作用域:

就是根据变量名称存储和查找变量的一套规则。

  • 作用域的作用:

一个是编译期间与编译器交互,将声明的变量创建到对应作用域下;另一个是代码执行期间与引擎交互,在对应的作用域查找变量值和对相应作用域下的变量进行赋值。

  • 查找规则:

LHS(left-hand-side),LHS 可以理解为被赋值的变量应用的查询规则,RHS 可以被理解为取值的变量应用的查询规则。两者在查询不到结果时表现不一样,非严格模式下,LHS 会将查询不到的变量声明会全局变量,RHS 则会抛出异常。

作用域工作过程分析:

举例 var a = 2 涉及过程:

  1. 词法分析阶段:编译器碰到 var a 这类的声明会向作用域询问是否已存在该变量,然后生 成执行代码。
  2. 代码执行过程:引擎运行代码,进行赋值操作,赋值前会从当前作用域开始执行 ##LHS 查询(见查找规则)## 是否又 a 这个变量,如果没有抛出异常 Uncaught ReferenceError: a is not defined,如果有则进行赋值操作。

问题:JavaScript 为什么被设计成解释型语言?

自己想到原因是,解释型语言方便别人查看和复用。

正文完
 0