gpt4 book ai didi

javascript - 变量设置为 Javascript 中 for 循环中的最后一个值

转载 作者:行者123 更新时间:2023-11-30 10:03:35 25 4
gpt4 key购买 nike

我对以下代码的输出有疑问。

var _list = [{id:0}, {id:1}, {id:2}, {id:3}, {id:4}];

function storeList() {
for (var i = 0, j = _list.length; i < j; i++) {
var key = makeKey(_list[i].id);
_db.setValue(
function() {
console.log("OK: store a value of " + key);
},
function() {
throw "ERR: can't store a value of " + key;
},
databaseName,
key,
_list[i]);
}
}

storeList();

我希望它应该输出:

OK: store a value of 0
OK: store a value of 1
OK: store a value of 2
OK: store a value of 3
OK: store a value of 4

但是,它输出:

OK: store a value of 4
OK: store a value of 4
OK: store a value of 4
OK: store a value of 4
OK: store a value of 4

为什么?以及,正确的输出方式是什么?我在 Android Webview 上运行这段 javascript 代码。

提前致谢。

最佳答案

您需要关闭。您可以通过在自执行函数 (IIFE) 中创建 key 后包装代码来做到这一点

(function(key) {
db.setValue(
function() {
console.log("OK: store a value of " + key);
},
function() {
throw "ERR: can't store a value of " + key;
},
databaseName,
key,
_list[i]
);
})(key);

这是因为之前 key 的范围对 所有 您迭代的 setValue 调用是可见的。通过使用 IIFE,您传递的键范围在每个 setValue 调用中。

关于javascript - 变量设置为 Javascript 中 for 循环中的最后一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30436985/

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