作用域和闭包(一)
作用域和闭包(一) 一、 作用域是什么? 1、概念:设计好一套规则来存储变量,并且之后可以方便找到这些变量。(并且之后对这个值可以进行访问和修改。) 2、传统编译语言流程:程序中的源代码在执行之前,会经历以下三个步骤,统称为“编译”; (1)分词/词法分析。(这个·过程会将由字符组成的字符串分解成(对编程语言来说)有意义的代码块,这些代码块被称为词法单元。) 例:var a = 2; //被分解成 var、a、=、2、;这些词法单元。(空格是否被当作词法单元,却决于它在语言中的意义); (2)解析/语法分析。 (3)代码生成。 概念:将AST转换为可执行代码的过程称为代码生成。(就是将var a = 2;的AST转化为一组机器指令,用来创建一个a的变量并将一个值·存储在a中。) 任何JavaScript代码在执行之前都要进行编译 3、理解作用域 (1)对var a = 2;进行处理的三大成员 引 擎:从头到尾负责整个JavaScript程序的编译和执行过程。 编译器:负责语法分析及代码生成。 作用域:负责收集并维护由所有生命的标识符(变量)组成的一系列查询,并实施一套非常严厉的规则,确定当前执行的代码对这些标识符的访问权限。 (2)编译处理过程。