【发布时间】:2015-02-17 04:52:50
【问题描述】:
我不太确定如何更好地表达这个问题,但基本上我的问题是这样的:
我有这样的代码(不完全是,这段代码真的很简单,而我的稍微复杂一点):
var funcs = [];
for (var i = 0; i < 10; i++) {
funcs[i] = function() { return i; };
}
所以想法是funcs 中的每个函数在调用时将返回从 0 到 9 的每个数字。但问题是每个人在调用时仍然引用变量i,所以它们都将返回9。我如何按预期完成这项工作(即对于所有n,funcs[n]() === n)?如何让每个函数范围仅捕获 i 的当前值,而不是更改的值?
【问题讨论】:
-
如何在该函数中声明一个值为
i的局部变量并返回它呢? -
显然这是简化的代码,但如果您的函数仅与 i 的值不同,那么“i”似乎应该只是一个参数。
-
调用一个函数,为每次迭代创建一个单独的激活帧
-
欢迎来到Stack Overflow!我相信这应该回答你的问题:JavaScript closure inside loops – simple practical example。如果没有,请告诉我。
-
是的,谢谢您的回答。我不太确定要搜索什么。
标签: javascript function variables scope