gpt4 book ai didi

javascript - 在 Javascript 循环中定义函数并使用循环中设置的变量

转载 作者:行者123 更新时间:2023-12-02 17:29:09 25 4
gpt4 key购买 nike

我正在尝试在 javascript 中循环定义函数...

for (var i in myArray) {
Object.defineProperty(object, "field"+i, { ... });
}

...每个函数都需要使用在该循环中设置的变量...

for (var i in myArray) {
Object.defineProperty(object, "field"+i, {
get: function() { return "some operation" + myArray[i]; }
});
}

...但这不起作用,因为当我调用函数时(在定义函数很久之后),i 计算出 myArray 中的最后一项。我在循环中定义的所有函数都返回相同(错误)的值。

谁能告诉我如何实现我的目标:在我的 getter 函数中使用 myArray[i]

最佳答案

我使用工厂函数创建了一个额外的闭包:

function makeGetter(myString) {
return function () { return "some operation" + myString; };
}
for (var i in myArray) {
Object.defineProperty(object, "field"+i, {
get: makeGetter(myArray[i])
});
}

关于javascript - 在 Javascript 循环中定义函数并使用循环中设置的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23226591/

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