词法作用域

作用域共有两种主要的工作模型。一种是最为普遍的,被大多数编程语言所采用的词法作用域,另一种叫做动态作用域,仍有一些编程语言在使用。

2.1 词法阶段

在第一章中讲过,大部分标准语言编译器的第一个工作级阶段叫做词法化(也叫单词化)。词法化的过程会对源代码中的字符进行检查,如果是有状态的解析过程,还会赋予单词语义。
这个概念是理解词法作用域及其名称来历的基础。
简单的说,词法作用域就是定义在词法阶段的作用域。由你在写代码时将变量和块作用域写在哪里决定的。因此当词法分析器处理代码时会保持作用域不变(大部分情况下时这样的)。

function foo(a){
  var b = a*2;
  function bar(c){
    console.log(a,b,c);
  }
  bar(b*3);
}
foo(2);//2,4,12

上面代码可以理解为下面的示意图


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

推荐阅读更多精彩内容