你不知道的Javascript(上)-第一章

第一章 作用域是什么

用来存储变量的一套规则,使变量被方便的找到

  1. 编译的大致过程
  • 分词/词法分析

分词:将字符串分析为词法单元var a=2; => (var,a,=,2,;)

词法分析:判断词法单元是独立的还是居于其他词法单元的一部分

  • 解析/语法分析

将词法单元转化为一个由元素逐级嵌套所组成的语法结构树—抽象语法树(Abstract Syntax Tree)

  • 代码生成

将AST转化为可执行代码

  1. 编译器在作用域中的两种查找方式
    LHS:变量出现在赋值操作的左侧进行的查询,找到操作目标;
    RHS:变量出现在赋值操作的非左侧进行的查询,去溯源;
    L和R的理解:赋值操作的左侧或右侧。
function foo(a){
var b=a;
return a+b;
}
var c=foo(2);

有三处LHS:var c=foo(2),var a=2,var b=a
有四处RHS:foo(2),a(var b=a),a(a+b),b(a+b)

  1. 作用域的嵌套—作用域链

当一个块或者函数嵌套在另一个块或者函数中时,就发生了作用域的嵌套。在当前作用域中无法找到某个变量的时候,就会去外层嵌套的作用域中继续查找,直到找到该变量或抵达最外层的作用域(全局作用域)为止。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容