问题标签 [dynamic-scope]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
52 浏览

parameters - 动态作用域中的形式参数和自由变量

我对动态范围有些困惑,特别是当形式参数和自由变量共享名称时会发生什么。

例如

如果使用动态范围编译和评估此代码,输入会是什么?2个还是3个?

虽然参数中的赋值 (x = 2) 似乎是最新的,所以它应该是 2,但有些人告诉我答案是 1(而其他人说是 2。每个人都很困惑)。

{我知道方案,大多数语言都使用词法作用域,但告诉我的教授}

我会很感激我能得到的任何帮助。

0 投票
1 回答
29 浏览

scoping - 如果 JavaScript 是动态作用域,那么最后一个 console.log() 会在以下代码中产生什么结果?

这就是我定义函数的方式,变量x,y,z是用一些整数定义的。

以下是我对上面的代码是否为动态范围的想法:

不确定最后一个 console.log 会输出什么。

0 投票
1 回答
103 浏览

haskell - 词法或动态范围 - Haskell 实现的评估器

在谈到词法作用域和动态作用域之间的区别后,我的教授给了我们一个问题。他向我们展示了一个用 Haskell 编码的简单求值器(一种虚构的语言)。以下是代码:

问题问:

这种实现的语言是使用词法作用域还是动态作用域?以及我们应该如何更改代码以使其具有另一种类型的范围

坦率地说,这是一个非常难的问题。从代码中很容易看出,这种语言是实现“按名称调用”还是“按值调用”(在本例中为“按值调用”)。但是分析它是动态作用域还是词法作用域是另一回事

0 投票
1 回答
31 浏览

javascript - Javascript 中的动态范围,类似于 Mongo

我一直在尝试围绕动态范围进行思考,我喜欢使用 MongoDB,例如,您可以选择使用字符串进行范围(这是伪的,尚未经过测试)

你将如何在 Javascript 中完成同样的事情。也许像

我一直在想办法尽可能清楚地问这个问题,所以如果我只是将未经过滤的想法倒在互联网上而没有真正的连贯期望,请要求澄清

0 投票
3 回答
70 浏览

scheme - Scheme语言中的词法与动态解释器

我仍然不明白动态解释器与词汇解释器有何不同。

我正在研究方案,我发现很难知道像这样的简单代码如何动态地和词法地工作。

任何指导?

0 投票
0 回答
15 浏览

dynamic-scope - 基于动态范围查找值

我无法理解动态范围。所以我尝试解决下面的例子:

我被要求假设参数是通过引用传递的。

我在想,因为 'y' 和 'a' 指的是同一个内存空间(y 只是 f2 的形式参数),所以在控制移动到 f1 之前,两者的值都将为 0。我对么?相同的逻辑是否适用于 f1?如果不是,正确的方法是什么?

0 投票
1 回答
56 浏览

oop - 使用浅绑定时的输出是什么?

在 first() 运行后,add() 修改 second::x,而不是 ::x 对吗?所以输出是 3... 但给出的答案是:Dynamic Sc​​ope (shallow binding): (x=5+y=6)=11

0 投票
2 回答
79 浏览

c - 特殊变量和全局变量的区别

在 GNU CLISP 2.49.92 中,以下代码:

给出以下输出:

同样,下面的 C 代码:

给出以下输出:

根据我找到的文档,defvar创建一个动态范围的特殊变量。另一方面,C 是一种静态范围的语言。然而,这两段代码给出了相同的输出。那么特殊变量和全局变量有什么区别呢?

0 投票
2 回答
82 浏览

structure - 具有动态范围槽的通用 Lisp 结构

Common Lisp 是词法范围的,但可以使用(declare (special *var*)). 我需要的是一种创建动态范围结构槽的方法,它的值对所有其他槽都是可见的。这是一个例子:

这适用于通常的词汇环境:

这不起作用:

我的问题是

  1. 如何从其他插槽中引用插槽延迟?
  2. 如何使槽延迟动态限定范围,使其值对函数可见(start-thread)
0 投票
0 回答
20 浏览

javascript - JS 这个动态作用域

在尝试执行以下代码段时,我希望doFoo.call(obj, obj.foo) 调用返回"inside obj",因为调用堆栈中前一个元素的动态范围具有对的引用,a但调用具有全局上下文。我在这里想念什么?