我已经多次看到术语“词法变量”,主要是在闭包的上下文中。Paul Graham 在他关于 Lisp 的书中使用这个术语来指代使用 let 表达式定义的变量。
我知道词法作用域是静态作用域的另一个名称。词法变量只是在程序单元的引用环境中可见的变量吗?
我希望在这个假期用这个词给我的朋友和家人留下深刻的印象,有人可以帮帮我吗?
我已经多次看到术语“词法变量”,主要是在闭包的上下文中。Paul Graham 在他关于 Lisp 的书中使用这个术语来指代使用 let 表达式定义的变量。
我知道词法作用域是静态作用域的另一个名称。词法变量只是在程序单元的引用环境中可见的变量吗?
我希望在这个假期用这个词给我的朋友和家人留下深刻的印象,有人可以帮帮我吗?
词法变量是只能在其词法范围内(按名称)引用的变量。换句话说,变量的范围是由程序的文本定义的,而不是程序执行的动态。绑定到它的变量和值可能具有超出词法范围的范围(寿命),例如,如果它被捕获在闭包中。
请参阅此范围和程度的说明。
词法变量在程序单元的引用环境中是可见的,但并非所有在程序单元的引用环境中可见的变量都必须是词法变量。
基本上,词法变量是特定于定义它的范围的变量。在像 Perl 这样的语言中,您实际上有两个相互掩蔽的命名空间:底层动态包命名空间和覆盖的词法命名空间。所以 $foo 可以引用任何一个,这完全取决于它是否在词法上被声明。