问题标签 [lexical-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 投票
2 回答
277 浏览

common-lisp - 词法设置函数符号

我正在寻找一种方法来轻松、暂时地交换功能。我知道我可以像这样手动设置函数符号:

我也知道labels或者flet可以临时为定义的函数设置名称:

有没有办法手动,词法设置函数名?例如。:

注意:我尝试深入了解标签和 flet 的来源,但两者都是特殊运算符。没有喜悦。

0 投票
1 回答
54 浏览

javascript - 将范围从全局更改为本地破坏 Javascript 程序

感谢你们优秀的溢出者的帮助,我修复了我愚蠢的小 RNG 加法游戏并让它工作。现在,根据一位用户的建议,在编写下一个游戏之前,我正在尝试将添加游戏代码的范围从全局更改为本地;我希望每个游戏都完全包含在它自己的范围内,因为我知道学习不要轻率地污染全局范围是一个好主意。但是,我有点坚持如何实现这一目标。

这是当前功能加法游戏的代码:

这是我包装它的尝试,它只成功地破坏了游戏,以至于按钮甚至没有响应:

功能代码在JSFiddle 上可用。

0 投票
2 回答
82 浏览

scala - 从匿名函数引用实例成员

我正在尝试定义一个类,其实例具有一个String和一个函数。在函数中使用String参数。

这给出了最后一次使用 name: 的错误not found: value name

我怎样才能做到这一点?

0 投票
3 回答
585 浏览

emacs - 使用 let-bound 变量穿透 `set-process-sentinel` 层次结构

我从来没有想出一种方法来使用在函数开头定义的set-process-sentinellet-bound 变量来穿透层次结构——只有缓冲区局部变量或全局变量才能穿透它。let-bound 变量可以到达 first ,但这是它们可以穿透而不会由于无法识别而被拒绝的范围 -在函数开头定义的let-bound 变量似乎无法穿透开始的部分与. 谁能想到一种方法来做到这一点,包括像下面的示例中那样穿透嵌套的哨兵?start-process(lambda (p e) . . .

0 投票
2 回答
146 浏览

r - 如何在R中的公式中使用对变量的转换

我正在尝试在运行一些模型变体并将结果存储在列表中的函数中使用我的结果变量的转换。

runpanels 函数首先调用准备数据函数,该函数创建在函数中指定为参数的结果变量的滞后变量和差异变量。所以在preparedata之后,模型数据包含outcomevar、doutcomevar和loutcomevar。

我的问题是我现在需要调用/获取结果变量的这些转换来对数据进行子集化,以使 loutcomevar 和 doutcomevar 不为零。然后我需要在模型中使用 doutcomevar 和 loutcomevar。

不出所料,在评估“loutcomevar!= 0”时出现错误:eval(expr,envir,enclos)中的错误:找不到对象'loutcomevar'调用:eval(e,x,parent.frame())

所以它没有找到我在运行面板函数环境中的准备数据函数中创建的滞后变量。

我怎样才能调用这些变量?

下面来自另一个问题的示例解决方案是使用与我的问题类似的调用,但我也想调用作为函数参数的结果变量的转换。任何如何解决这个问题的想法将不胜感激!

来自其他类似问题的示例解决方案:air <- data(airquality) fm <- lm(Ozone ~ Solar.R, data=airquality)

0 投票
1 回答
59 浏览

r - 您可以启用 R 函数以查看其自身形式的评估值吗?

在 R 语言中,假设我有一个函数 ff(jj, kk, mm)。我希望调用函数(或在交互式会话中调用人类)能够使 mm 在调用时以任意方式依赖于 jj 和 kk。

具体而言,假设:

然后在运行时,我想设置mm <- jj*kk. IE:

这产生:

在评估之前不会抛出此错误mm,即在成功评估之后jj并且kk已经成功评估。因此,然后使用不同的范围规则对其进行第二次评估。我知道这是 R 标准范围。我在问,如果这些参数已经或可以在 mm需要之前进行评估,我是否可以以这样的方式编写函数,它可以让我给 mm 一个简单的数字或其他形式参数的函数?

请注意,我不是在问我是否应该这样做。我会坚决地假装对就后一个问题发表意见的人保持礼貌。

我也不是在问我是否可以预先计算 jj 并将预先消化的数字交给 ff。我知道这是一个合理的答案,但由于我已经简化了问题的原因,它不起作用。

0 投票
1 回答
56 浏览

javascript - javascript函数中的词法范围,为什么代码返回未定义

我从词法作用域的定义中了解到,函数可以访问其作用域内及以上的所有值,即在它们之前定义的所有值。那么为什么第一个警报返回 undefined ?

0 投票
1 回答
1671 浏览

scipy - scipy - 为什么 COBYLA 不尊重约束?

我正在使用 COBYLA 对具有约束的线性目标函数进行成本最小化。我通过为每个包含一个约束来实现下限和上限。

COBYLA 不尊重上限或下限约束,但确实尊重技术约束。

为什么COBYLA 不尊重第一个因素约束(即上限@ 15)?

0 投票
4 回答
278 浏览

perl - 在 Perl 中,“$a”和“$b”在 sort() 函数之外有什么特殊用途吗?

前几天我问了一个关于在 Perl 的sort()函数中使用 "$a" 和 "$b" 的问题:

Perl 的“sort()”函数中的“$a”和“$b”到底是什么?

我现在有一个后续问题。"$a" 和 "$b" 是否仅由使用sort()这些特殊全局变量的 Perl 函数使用?

或者即使没有其他函数使用它们,是否还有其他情况sort()会使用“$a”或“$b”?

编辑:

澄清:

简而言之,问题是“$a”和“$b”可以被其他东西使用sort()吗?

我只是想知道它们可以在哪些其他情况下使用。我从未见过“$a”或“$b”被其他任何东西使用,并且想知道在sort().

0 投票
1 回答
463 浏览

javascript - 内存模型中的词法作用域是什么样的?

假设我们有一个函数:

这在内存模型中会是什么样子。到目前为止,这就是我想象的堆栈上的样子?

词法作用域是什么样的 bar 如何知道 x 是什么?foo()在堆上吗?还是bar()有指向的指针foo()