问题标签 [lexical-closures]

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 回答
247 浏览

javascript - React setstate 不会将旧状态合并到新状态

根据许多示例,这应该有效:

第一次合并时,它可以工作。但是一旦一个带有另一个键名的新事件进入,它就会再次替换整个事件。不是使用 [keyname] 添加新密钥,而是替换旧的 [keyname]。

0 投票
0 回答
40 浏览

javascript - 闭包/对象组合调查:为什么第一个断点只命中一次,而闭包范围内的断点被重复命中?

可以在周六下午的对象组成/关闭调查中使用一些反馈(它是否准确,是否缺少任何关键点,非关键点,您能否帮助回答剩余的问题/提供资源来这样做)。提前致谢 :)

在此处运行:https ://www.typescriptlang.org/play#code/ 或在某些打字稿调试环境中或删除所有类型并在节点中运行

问题:

  • 为什么只有在表示为时才第一次debugger/console.log('input:', input)命中,而不是在传入新值时的每次后续调用?outersetClosureScopesetClosureScope
  • 这个内存存储在作用域执行上下文和内存引用方面实际上是如何工作的?

结论:

当函数outer表示为变量时setClosureScope

  • 传递给外部函数的值作为闭包范围存储在内存中
  • 这种将数据包装在闭包中的技术/方法是: - 在对象组合中很常见 - 功能强大,因为它将数据锁定在将这些数据属性封装为成员的对象内的嵌套闭包的范围内
0 投票
1 回答
176 浏览

javascript - LexicalEnviroment 对象与 [[Enviroment]] 的关系

据说每个代码块都有一个名为 的隐藏对象LexicalEnviroment。该对象包含对外部范围的引用和一个EnviromentRecord,其中包含有关当前范围的信息。

另一方面,据说函数之所以能够闭包,是因为它们的[[Enviroment]]构造“记住了函数的定义位置”。

我很困惑,object 和之间是什么关系LexicalEnviroment[[Enviroment]]?他们是一回事吗?只有函数有[[Enviroment]]构造吗?那他们有LexicalEnviroment对象吗?

0 投票
1 回答
57 浏览

javascript - Javascript闭包不会增加价值

为什么第一个counter1()不增加值并返回 0。但是第二个调用将值增加到 1,正如预期的那样:这是我一直在调试的

0 投票
1 回答
57 浏览

perl - 哪个版本的 Perl 引入了词法我的子程序?

根据这个错误报告,我的一个模块在旧的 Perls 上产生了这个错误,

<file.pm> 未启用实验性“我的”潜艇...

我也应该设置我的最低 perl 版本?

0 投票
1 回答
21 浏览

javascript - 在每个级别具有 var 变量的代码会产生意想不到的结果

请解释为什么输出为 4。我试图理解输出为 4,但找不到不是 3 的原因。

0 投票
1 回答
196 浏览

variables - 运行计时器时出错:Emacs init.el 中的(无效变量消息)

为什么我会Error running timer: (void-variable message) 在我的 `init.el - Emacs 中进入下面的函数?