问题标签 [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 投票
1 回答
85728 浏览

c# - C# 中的“闭包”是什么?

复制

.NET 中的闭包

C# 中的闭包是什么?

0 投票
2 回答
932 浏览

javascript - 我可以在这里使用 Javascript 闭包而不是全局变量吗?

当前设置:

我可以/应该使用闭包吗?

0 投票
9 回答
24338 浏览

javascript - 闭包与回调有何不同?

我问了一个关于回调的问题并提出了另一个问题(见评论)。闭包与回调有何不同?

0 投票
3 回答
9460 浏览

c# - 在 .NET ThreadPool.QueueUserWorkItem 中使用匿名委托

我打算发布一个问题,但提前弄清楚并决定发布问题和答案 - 或者至少是我的观察结果。

当使用匿名委托作为 WaitCallback 时,在 foreach 循环中调用 ThreadPool.QueueUserWorkItem 时,似乎将相同的一个 foreach-value 传递到每个线程。

对于 Things 中 16 个 Thing 实例的集合,我观察到传递给 WorkWithOneThing 的每个“Thing”都对应于“things”列表中的最后一项。

我怀疑这是因为委托正在访问“t”外部变量。请注意,我还尝试将 Thing 作为参数传递给匿名委托,但行为仍然不正确。

当我重构代码以使用命名的 WaitCallback 方法并将 Thing 't' 传递给该方法时,瞧……Thing 的第 i 个实例被正确传递到 WorkWithOneThing。

我猜是并行性的一课。我还想象 Parallel.For 家族解决了这个问题,但此时该库不是我们的选择。

希望这可以节省其他人一些时间。

霍华德霍夫曼

0 投票
4 回答
2360 浏览

javascript - 是否可以使用闭包模拟 Javascript 中的常量?

是否可以使用闭包模拟 Javascript 中的常量?如果是这样,你能给我举个例子吗?

0 投票
7 回答
2880 浏览

javascript - JavaScript 作用域和闭包

我正试图绕过关闭(那里有一个笑话),我遇到了这个:

这是如何运作的?将函数放在括号中的目的是什么?为什么之后是空的括号?

0 投票
1 回答
2199 浏览

javascript - javascript中的嵌套函数内存使用情况

我有点理解 javascript 中的闭包,但我不确定它如何处理嵌套函数。例如:

我知道每次调用 function 时都会创建一个新的闭包a,但是该闭包是否还包括传递给的匿名函数的新实例someFunction?如果我改为 ff 会更好:

0 投票
3 回答
2561 浏览

javascript - 这个 jQuery 代码片段会导致任何内存泄漏吗?

我想知道以下 jquery 代码是否会导致任何内存泄漏:

根据我的理解,$('tr:last', parent)最后一行是 DOM 对象,但是在匿名函数中,闭包在范围内有这个 DOM 对象,因此 DOM 和 js 对象之间存在循环引用。

但是如果真的有泄漏的话,我可以在曼宁出版的畅销书《jQuery in Action》中看到很多这样的代码。在 jQuery 编码中是有害的“最佳实践”吗?

但我不知道我的理解是否正确。希望大家多多指正和指正。谢谢!

0 投票
7 回答
18369 浏览

javascript - JavaScript 不支持带有局部变量的闭包吗?

我对这段代码感到非常困惑:

据我了解,它应该打印0,1,2,3,4(这不是闭包的概念吗?)。

相反,它打印5,5,5,5,5.

我试过犀牛和火狐。有人可以向我解释这种行为吗?

0 投票
2 回答
1534 浏览

javascript - 在Javascript中访问私有实例变量的静态公共方法

我一直在阅读 Diaz 的书 Pro JavaScript Design Patterns。很棒的书。我本人无论如何都不是专业人士。我的问题:我可以拥有一个可以访问私有实例变量的静态函数吗?我的程序有一堆设备,其中一个的输出可以连接到另一个的输入。此信息存储在输入和输出数组中。这是我的代码:

这似乎不起作用,因为 Device.connect 无权访问设备输出和输入数组。有没有办法在不向设备添加会暴露它的特权方法(如 pushToOutputs)的情况下获取它们?

谢谢!史蒂夫。