DS.Lab筆記

来源:互联网 发布:淘宝天猫店有保障吗 编辑:程序博客网 时间:2024/06/02 19:29

引言

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

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


普适理论



作用域

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

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

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


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


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


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



动态作用域


命名绑定


执行环境



结论

原创粉丝点击