gpt4 book ai didi

Node.js:循环中的闭包

转载 作者:太空宇宙 更新时间:2023-11-03 22:54:39 25 4
gpt4 key购买 nike

我无法掌握闭包。一个非常简单的例子:

var array = [1,2,3];
var test = [0,0];
var result = [];
for (var i=1; i<=array.length; i++){
test[1] = i;
result.push(test);
}
console.log(result);

如果我只是将“i”插入结果中,它会输出“1,2,3”,但上面的方法我总是得到“[0,3],[0,3][0,3]”。这是为什么?我读过一些关于闭包的解释,但我似乎不理解这个系统,这使得很难在我的代码中找到其他错误。难道没有比在函数内部使用函数更简单的方法来解决上述问题吗(这似乎是我迄今为止发现的每个等效问题的解决方案)?

最佳答案

您正在将相同的实例写入结果,当您更改该实例中的参数时,结果中的所有实例都会更改。您需要创建单独的实例来保存数据,下面的代码说明了正确的方法

var array = [1,2,3];
var test = [0,0];
var result = [];
for (var i=1; i<=array.length; i++){
var z = [test[0], i];
result.push(z);
}
console.log(result);

关于Node.js:循环中的闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25347314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com