Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript:作为参数传递时设置的变量不正确_Javascript_Node.js - Fatal编程技术网

javascript:作为参数传递时设置的变量不正确

javascript:作为参数传递时设置的变量不正确,javascript,node.js,Javascript,Node.js,我有以下代码和输出。我不明白为什么函数接收到错误的参数。请提供指针 var tempAccounts = []; var i; for (i = 0; i < accountIDs.length; i++) { var accountID = accountIDs[i]; console.log("Log1:" + accountID); tempAccounts.push(function(callback){createTempAccount(accountID

我有以下代码和输出。我不明白为什么函数接收到错误的参数。请提供指针

var tempAccounts = [];
var i;
for (i = 0; i < accountIDs.length; i++) {
    var accountID = accountIDs[i];
    console.log("Log1:" + accountID);
    tempAccounts.push(function(callback){createTempAccount(accountID, callback)})
}

async.parallel(tempAccounts, function (error, results) {
    if (error) {
        sendError(error, "error creating temp acounts", res, logTag);
    } else {
        res.set('Content-Type','application/json');
        res.send(200, {});
    }
});


function createTempAccount(accountID, callback)
{
  console.log("Log2:" + accountID);
  ...
}

这里可能有什么问题?

您不需要所有额外的代码来查看问题。它可以简化为以下代码段。在循环中定义函数时,将在闭包中捕获共享变量。之后调用这些函数时,只会得到一个值:

var tempAccounts=[]; 让AccountId=[200400] 变量i 对于i=0;i.长度;i++{ var accountID=accountID[i]; console.log1:+accountID; tempAccounts.pushfunction{return accountID} } //同样的价值
console.logtempAccounts.mapi=>主要问题是,这并没有提供一个完整的版本,因此我建议您阅读并理解它,然后相应地更新。你可能真的是指,或者,当你说平行时,你期待的是系列。但要弄清楚你指的是哪一个才是MCVE的目的。@NeilLunn。。这是正确的答案。现在我得到了预期的输出。非常感谢你!在NodeJS中编写代码时,最好使用let而不是var。我得到了一个错误SyntaxError:块作用域声明let、const、function、class在strict Mode之外还不受支持噢,这太糟糕了,@GJain。这让事情变得容易多了。即使只是针对特定的函数,“使用strict”也不难。
Log1: 1234
Log1: abcd

Log2: 1234
Log2: 1234