JavaScript强化版知识——作用域是什么

  • Post author:
  • Post category:java


传统编译语言:(程序代码执行之前)编译

  1. 分词/词法分析
  2. 解析/语法分析
  3. 代码生成(将AST转换为可执行代码)

任何JavaScript代码片段在执行前都要进行编译(通常就在执行前)


引擎:

从头负责整个JavaScript程序的编译及执行过程


编译器:

负责语法分析及代码生成等


作用域:

负责收集并维护由所有声明的标识符(变量)组成的一系列查询,并实施一套非常严格的规则,确定当前执行的代码对这些标识符的访问权限(作用域就是一套规则,用于确定在何处以及如何查找变量(标识符))

当变量出现在赋值操作的左侧时进行LHS查询,出现在右侧时进行RHS查询

ReferenceError同作用域判别失败相关,而TypeError则代表作用域判别成功了,但对结果的操作是非法或不合理的

如果查找的目的是对变量进行赋值,那么就会使用LHS查询,如果目的是获取变量的值,就会使用RHS查询。

不成功的RHS引用会导致抛出ReferenceError异常。不成功的LHS引用会导致自动隐式地创建一个全局变量(非严格模式下),该变量使用LHS引用的目标作为标识符,或者抛出ReferenceError异常(严格模式下)



版权声明:本文为qq_37196494原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。