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

javascript - Javascript 闭包和“this”

我创建的一个看起来像这样的对象有问题:

问题是当我在“DoSomething”函数中时,“this”并不指“myObject”我做错了什么?

0 投票
3 回答
7278 浏览

javascript - jQuery 闭包、循环和事件

我有一个与此处类似的问题:Javascript 循环中的事件处理程序 - 需要闭包吗?但我正在使用 jQuery,并且给出的解决方案似乎在绑定而不是单击时触发事件。

这是我的代码:

我尝试了几种不同的方法都没有成功...

最初的问题是 _this.Indicator.TrueImage 始终是最后一个值,因为我使用循环计数器而不是参数来选择正确的图像。

0 投票
1 回答
482 浏览

closures - 闭包和柯里化的区别和可能的相似之处是什么?

我已经阅读了一些关于闭包和柯里化的帖子,但我觉得我没有找到答案。那么闭包和柯里化的区别和相似之处是什么?谢谢您的帮助 :)

0 投票
9 回答
12889 浏览

python - 在 Python 中修改闭包的绑定变量

有什么方法可以修改闭包内变量之一的绑定值?查看示例以更好地理解它。

0 投票
3 回答
2675 浏览

java - 在 Java 中验证反射方法返回类型和参数

我有一个通用的回调对象,它为 Java 提供(原始)回调功能,在没有闭包的情况下。Callback 对象包含一个 Method,并通过几个访问器方法返回该方法的参数和返回类型,这些访问器方法只是委托给 Method 中的等效方法。

我正在尝试验证为我提供的回调是否指向有效方法。我需要与 Number 兼容的返回类型赋值以及与 Double 兼容的所有参数。我的验证方法如下所示:

我遇到的问题是,当我尝试使用例如 Math.abs() 时,它会为返回类型抛出异常,如下所示:

这让我感到惊讶,因为我希望原语能够简单地工作,因为 (a) 它们使用它们的包装类来反映,并且 (b) Double.TYPE 被声明为 Class<Double> 类型。

有谁知道我如何在不修改我的支票的情况下实现这一目标:


澄清

当您double abs(double)使用 Method.invoke() 调用该方法时,您传入一个 Object[]{Double} 并返回一个 Double。但是,我的验证似乎失败了,因为 Double.TYPE 不能分配给 Double。由于我要求所有这些回调返回某种数字,这将由 invoke() 作为数字返回,因此我试图验证提供的方法是否返回数字或数字原语。

参数的验证也是如此。

换句话说,当使用反射时,参数和返回类型 Double 和 double 是相同的,我想这样轻松地验证它们。

编辑:进一步澄清:我想验证一个方法是否会在调用 invoke() 时返回一个 Number 类型的对象(我可以从中调用 obj.doubleValue() 来获得我想要的双精度)。

0 投票
7 回答
3665 浏览

php - 闭包作为类成员?

我喜欢 jQuery/Javascript 通过闭包扩展功能的方式。是否可以在 PHP 5.3 中做类似的事情?

[编辑] 在我的问题中混淆了“它”和“是”。呵呵。

更新

我下载了 5.3a3,它确实有效!

0 投票
4 回答
5578 浏览

ruby - ruby:块可以影响方法中的局部变量吗?

我只是在学习 ruby​​ 并试图了解块中执行的代码的范围。例如,我希望能够创建一个影响它附加到的方法的块,如下所示:

在这种情况下,我根本不想修改块——我希望能够使用简单的变量引用而不是参数来编写它。只有对上例中的“测试”方法进行更改,是否可以访问块中定义的变量?

同样,目标是不修改块,但能够在块执行后从“测试”中访问创建的变量。

0 投票
4 回答
6115 浏览

flash - 如何解决 ActionScript 3 (AS3) 中的关闭问题

在下面的代码中,我试图加载一些图像,并在它们单独加载后立即将它们放在舞台上。但它是错误的,因为只显示最后一张图像。我怀疑这是一个关闭问题。我该如何解决?AS3 中的闭包行为与 Java Script 中的行为不一样吗?

0 投票
2 回答
398 浏览

c# - Lambda 闭包或类级别变量?

只是关于最佳实践是什么的一般问题:

请注意,我x在我的 lambda 事件处理程序中使用该变量。

或者:

这里,x是类的私有成员,因此我可以在我的事件处理程序中访问它。

现在假设我不需要x代码中的其他任何地方(无论出于何种原因),哪种方法更好?

0 投票
6 回答
48329 浏览

apache-flex - 如何在 AS3 中创建自定义 MouseEvent.CLICK 事件(将参数传递给函数)?

这个问题不仅与 MouseEvent.CLICK 事件类型有关,而且与 AS3 中已经存在的所有事件类型有关。我阅读了很多关于自定义事件的内容,但直到现在我都无法弄清楚如何做我想做的事情。我试着解释一下,希望你明白:

这是我的情况的说明:

但我希望能够将someVar作为参数传递给doSomething。所以我尝试了这个:

这种工作,但不是我所期望的。由于函数闭包,当实际触发 MouseEvent.CLICK 事件时,for循环已经结束,并且someVar保存了最后一个值,即示例中的数字9。因此,每个影片剪辑中的每次点击都会调用doSomething,并将9作为参数传递。这不是我想要的。

我认为创建自定义事件应该可以工作,但是当触发 MouseEvent.CLICK 事件并将参数传递给它时,我找不到触发自定义事件的方法。现在我不知道这是否是正确的答案。

我应该怎么做?