词法作用域(Lexical scope):局部定义的函数也可以访问整个定义作用域内的名称绑定。
在下面的示例中,sqrt_update 引用名称 a,它是其封闭函数 sqrt 的形式参数。这种在嵌
套定义之间共享名称的规则称为词法作用域。最重要的是,内部函数可以访问 定义它们的 环境
中的名称;不同于动态作用域,取决于函数被调用的位置。
词法作用域的关键优势:
- 局部函数的名称不会影响定义它的函数的外部名称,因为局部函数的名称将绑定在定义 它的当前局部环境中,而不是全局环境中。
- 局部函数可以访问外层函数的环境,这是因为局部函数的函数体的求值环境会继承定义 它的求值环境。