gpt4 book ai didi

javascript - 函数内循环闭包问题

转载 作者:行者123 更新时间:2023-11-28 17:40:25 24 4
gpt4 key购买 nike

我真的很难理解闭包。我刚刚编写了一个小函数来尝试在数组索引中存储多个函数,但是当我打印它们时它们是未定义的。

这是我的代码:

function x() {

var arr = [];

for(var i = 0; i < 5; i++) {
arr.push( (function(index) { console.log(index) } )(i) );
}

return arr;
}

var z = new x();

for (var j = 0; j < 5; j++) {
console.log(z[j]); // Reads Undefined?
}
据我所知,我正在使用 IIFE 并传入“i”并将其用作“索引”,这应该可以帮助我解决不断打印出最后一个索引的已知闭包范围问题。但为什么我的数组索引未定义并且没有打印出“i”?

如果有帮助,我们将不胜感激。谢谢。

最佳答案

您不会从 IIFE 返回任何内容,因此它隐式返回附加到数组的 undefined 。如果你想存储 index 的值,你需要返回它:

arr.push( (function(index) { console.log(index); return index; } )(i) );

关于javascript - 函数内循环闭包问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48069028/

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