DS.Lab筆記 - ECMA-262-5 - 文法环境概论

引言

文法环境这个机制被很多语言采纳来实现静态作用域法则,比如像闭包这样的功能。

ECMA-262-5 标准借用了这个概念,但是它更多则只是对于ES3里的静态作用域机制的进一步抽象和理论层面的完善。因此,ES3里的概念,像触发体(activation object)被替换为触发记录(activation record),执行上下文栈被替换为调用栈(call-stack)。


普适理论



作用域

作用域用来管理在一个程序不同区域里变量的可见性,可访问性。从大一点的尺度上看,命名空间和组件这些技术都和作用域有关,它们提供了模块化程序设计的能力,也避免了命名冲突的问题。从小一点的尺度上讲,函数和代码块作用域的本地变量这些概念则进一步深化了封装的理念。

从抽象点的角度来理解,作用域提供了一个封闭的上下文,在这个上下文里,变量名被与某个特定值关联在一起。言外之意就是在其他的作用域里,相同的变量名可能就会与另外一个值关联了。

由于代码块与函数的存在,作用域会被嵌套。


前ES6时代,因为不支持区块作用域,我们基本上要靠IIFE来模拟区块作用域,ES6则通过let来实现(Vincent:const也是区块级别)。


下面就来介绍两种作用域法则:静态作用域和动态作用域。


静态作用域(也称文法作用域)



动态作用域


命名绑定


执行环境



结论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值