1、作用域:当程序运行的时候,就创建了一个用于保存变量和变量值的存储系统。这些内存中的作用域结构就被称为执行环境。
执行环境(或内存作用域)与词法作用域有所不同,它是在代码运行时才被创建,而不是代码被输入时,规则可以控制在程序执行过程中的不同点可以访问哪些变量。
2、程序运行时,将会创建内部数据存储,以记录可供不用函数对象访问的所有变量。
函数的每一次运行都完全独立于此前的任何一次运行。每次函数运行时就会创建一个新的运行环境。因此每个词法作用域在运行的过程中可能会创建多个内存作用域,也可能一个都没有,这完全取决于此函数运行了多少次。
3、词法作用域只是代码文件某处的代码字符,并不是一个可以存储在变量中的值也无法作为数组的某个元素。
4、闭包:简单来说,每个函数都可以访问其外围作用域的所有变量,闭包是指一些函数通过某种方式可以随时被访问,即使它的外部代码已经执行完毕。
5、一个函数的环境永远被创建为定义该函数的环境的子环境。
6、当你看到一个函数的输入参数是静态的,就是每次调用函数时,该参数不会使用一个新的值,这个时候就可以重构代码了,将这个值存储在一个外部作用域的变量中,根据闭包原理,内层的函数随时可以访问其外层作用域的变量,即使外层函数已经返回。