gpt4 book ai didi

javascript - 可变变量可以从闭包中访问

转载 作者:行者123 更新时间:2023-11-30 15:17:41 25 4
gpt4 key购买 nike

我是 JavaScript 的新手。这是我的代码

  ......
var filename, result, user=["a", "b", "c","d"];
for(var p=0;p<user.length;p++)
{
filename=userID[p]+'_'+user[p]+'.json';

fs.readFile(filename, function read(err, data)
{
if (err) {throw err;}
result = data.toString();

if (result.charAt(result.length-1) === ',')
result = result.substring(0,result.length-1) + ']}';

console.log(p+filename+result+"\n\n"); //here

});

}

在“此处”中,p 的值始终显示最后一个索引,在本例中,对于所有迭代,文件名都是最后一次迭代的 3。如何在“此处”中获取 p 的正确值。对于 p,我的编译器显示“Mutable Variable is in accessible from closures”。

最佳答案

@naomik 评论似乎是正确的,任何在循环体中的异步作业总是坏主意。因为循环不会等到响应。

var filename, result, user=["a", "b", "c","d"];
var p=0;
function readfileUnitil(p)
{
filename=userID[p]+'_'+user[p]+'.json';

fs.readFile(filename,function(err, data)
{
if (err) {throw err;}
result = data.toString();

if (result.charAt(result.length-1) === ',')
result = result.substring(0,result.length-1) + ']}';

console.log(p+filename+result+"\n\n"); //here
if(p<user.length){
p++;
readfileUnitil(p);
}
});
}
}

我确实更喜欢这种递归而不是 let 变量,因为它更具可读性,并且浏览器不会占用内存,希望能有所帮助。

关于javascript - 可变变量可以从闭包中访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44258574/

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