作用域是什么
当我们将变量引入程序后,这些变量住在哪里,当程序需要的时候如何找到他们?这些问题都需要一个规则来存储变量,并且之后可以方便的找到这些变量,这套规则就被称为 **作用域 **。(管理变量的规则)
- JavaScript的编译原理
- JavaScript语言类型:编译型语言、解释型语言
- 编译
在传统的编译言语的流程中,程序中的一段源代码在执行前会经历三个步骤:
(词法解析——语法分析——代码生成)
而JavaScript在这些过程中显得比较复杂,那就是还有很多的性能优化问题,比如他的引擎JIT,可以延迟编译甚至实施重编译,来保证性能最佳。 - JavaScript的编译总是发生在代码执行前的前几微妙。
- 总结:
编译: 词法单元——树结构——代码生成。
- 作用域
当我们执行一段代码时,都有哪些处理参与了呢?
- 引擎:负责从头到尾整个JavaScript的编译及执行过程;
- 编译器:负责语法分析及代码生成等粗活;
- 作用域:负责收集并维护有所有声明的标识符(变量)组成的一系列查询,并实施一套非常严格的股则,确定当前执行的代码对这些标识符的访问权限。
- 总结: 变量的赋值操作会执行两个动作,首先编译器会在当前作用域中声明一个变量(如果之前没有声明过的话), 然后在运行时引擎会在作用域中查找该变量,如果找到,就会对他赋值。
(代码,编译时构建,运行时查找)
- 总结
作用域是一套规则,用于确定在何处以及如何查找变量。(标识符)