第一章作用域是什么

1.1 编译原理

编译语言

  • 分词/词法分析

  • 解析/语法分析

  • 代码生成

对于Javascript来说,大部分情况发生在代码前的几微秒(甚至更短!)的时间内。在我们所要讨论的作用域背后,Javascript引擎用尽了各种办法(比如JIT,可以延迟编译甚至重编译)来保证性能最佳

1.2理解作用域

1.2.1 演员表

  • 引擎
  • 编译器
  • 作用域

1.2.2 对话

变量的赋值操作会执行两个动作,首先编译器会在当前作用域中声明一个变量(如果之前没有声明过),然后在运行时引擎会在作用域中查找该变量,如果能够找到就会对它赋值

1.2.3 编译器有话说

赋值操作的目标是谁(LHS)

谁赋值操作的源头(RHS)

a = 2 是LHS引用

console.log(a); 是RHS引用

1.2.4 引擎和作用域的对话

1.2.5 小测验

检验一下到目前的理解程度。 把自己当作引擎, 并同作用域进行一次“ 对话” :

function foo(a) {
  var b = a;
  return a + b;
}
var c = foo( 2 );
  1. 找到其中所有的 LHS 查询。( 这里有 3 处! )

    c = ..;、 a = 2( 隐式变量分配)、 b = ..

  2. 找到其中所有的 RHS 查询。( 这里有 4 处! )

    foo(2..、 = a;、 a ..、 .. b

1.3 作用域嵌套

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 官方中文版原文链接 感谢社区中各位的大力支持,译者再次奉上一点点福利:阿里云产品券,享受所有官网优惠,并抽取幸运大...
    HetfieldJoe阅读 8,465评论 5 34
  • 特别说明,为便于查阅,文章转自https://github.com/getify/You-Dont-Know-JS...
    杀破狼real阅读 3,666评论 0 0
  • 如果我的文章对你有用,请给我一个赞,让我有继续坚持的动力/微笑。原创文章,此文章仅供学习参考使用,欢迎访问我的个人...
    我就是z阅读 3,392评论 0 3
  • 程序需要存储变量中的值,并且能在之后对这个值进行访问或修改。这些变量存储在哪里?程序如何找到他们?这些问题需要一套...
    zyanfly阅读 2,472评论 0 1
  • 兰州,每一次,看到这个词,心都会情不自禁得颤抖一下。对于这个狭长而又嘈杂的城市,教会了我如何成为一个真正的西北人。...
    寒冬时节远走高飞阅读 2,744评论 0 1

友情链接更多精彩内容