You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于变量动态绑定与词法绑定行为差异的技术问询

关于Emacs中动态绑定与词法绑定的疑问

最近我在学习Emacs里的动态绑定(dynamical binding)和词法绑定(lexical binding),翻相关资料的时候碰到了个让我挠头的问题,具体情况是这样的:

  • 我先运行了这段代码:

    (let ((a 1)) (let ((f (lambda () (print a)))) (let ((a 2)) (funcall f))))
    

    按我的预期,输出应该是1,而且编辑器还会提示第二个a未使用的警告,这部分和预期完全吻合。

  • 可是当我执行了(defvar a 99)之后,再去运行第一段代码,结果居然变成了2,虽然这和教程里描述的情况一致,但我实在搞不懂为什么加了这一行定义之后,结果就变了?

内容的提问来源于stack exchange,提问作者Fnifni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:26:24