emacs - Emacs 24 中变量作用域的新规则是什么?

标签 emacs elisp lexical-scope dynamic-scope emacs24

Emacs 24 现在具有词法范围的变量。当然,它仍然具有动态范围的变量。现在它兼具了两者,我对变量何时具有哪种作用域感到非常困惑。有一个 lexical-binding 变量控制何时启用词法绑定(bind),我想我读过一些关于 defvar 现在声明动态范围变量的内容,但总的来说我是很迷失。对 Emacs 24 的新作用域规则有很好的解释吗?或者换句话说,当我查看为 Emacs 24 编写的 Emacs Lisp 代码中的变量时,如何判断该变量正在使用什么作用域?

最佳答案

本手册是权威来源。从这里开始:

C-hig (elisp) 变量作用域 RET

我最初在这个答案中引用了手册,但该信息(可追溯到 Emacs 24.0.90.1)稍微过时了。最好从 Emacs 内部阅读手册,这样信息对于您正在使用的版本来说是正确的。

如果你特别想在网页上阅读,当前版本是:
http://www.gnu.org/software/emacs/manual/html_node/elisp/Variable-Scoping.html

关于emacs - Emacs 24 中变量作用域的新规则是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7654848/

相关文章:

javascript - JavaScript 的 emacs 字体锁定模式 : would like to highlight 'self' just like 'this'

emacs - 查找文件 : Getting a dired buffer of files specified by filter containing text

emacs - 如何在 emacs minibuffer 中模拟返回

emacs - 在 emacs 编译模式下正确处理并行构建错误

sql - Gnu Emacs : tab-completion for psql running within sql. el 进程

matlab - 在 Emacs 中跟踪缓冲区更改并在事件发生后触发 Hook

Emacs 组织模式 : increment equation numbers with latex preview

R - 使用非标准评估检查字符串是否是有效的数学表达式

prolog - 在 Prolog 中定义 "let expressions"

javascript - 为什么需要 IIFE 来创建新范围?