【发布时间】:2012-12-26 06:36:35
【问题描述】:
下面是我正在处理的代码。我想知道为什么当我在函数中更改变量ttt 时,更改不会留在函数之外?我在最顶部将其声明为var ttt = new Array;。
还有,为什么我不能在函数中使用变量i?
代码:
client.on('connection', function()
{
var sss;
var aaa;
console.log('Connected');
for (i = 0 ; i < 120 ; i++)
ttt[i] = 0;
for (i = 0 ; i < 9 ; i++)
{
client.getMatchHistory(434582, function(err, result)
{
sss = JSON.stringify(result);
var myObject = eval('(' + sss + ')');
console.log (myObject.object.data[i].object.value);
ttt[myObject.object.data[i].object.value]++;
});
}
for (i = 0 ; i < 120 ; i++)
console.log ("Record" + i + " Successes: " + ttt[i]);
});
【问题讨论】:
-
你能澄清一下你的问题吗?当您说“更改不会停留在功能之外”时,您是什么意思?另外,当您问“为什么我不能在函数中使用变量
i?”时,您是什么意思? -
ttt[myObject.object.data[i].object.value]++;这一行应该改变 ttt 数组。它确实 - 在函数中。但在函数之外,稍后:console.log("Record" + i + " Successes:" + ttt[i]);无论如何都只显示为0。至于我不工作......在函数中,console.log中的i(myObject.object.data[i].object.value);总是以未定义的形式返回并崩溃。如果我将 i 替换为一个数字,例如 0,它会起作用。为什么函数不能从 for (i = 0 ; i 中引用/识别 i
标签: javascript scope closures