以下是我正在處理的代碼。我想知道爲什麼,當我在函數中更改變量ttt
時,更改不會停留在函數之外?我已經在最高層宣佈它爲var ttt = new Array;
。Javascript:如何修改函數內的全局變量?
另外,爲什麼我不能在函數中使用變量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'?」是什麼意思? – seliopou
ttt [myObject.object.data [i] .object.value] ++; 這行應該改變ttt數組。而且它在功能中。但在功能之外,稍後: console.log(「Record」+ i +「Successes:」+ ttt [i]);無論如何, 僅顯示爲0。 至於我不工作...在函數中,我在console.log(myObject.object.data [i] .object.value);總是返回未定義和崩潰。如果我用一個數字替換我,比如0,它就可以工作。爲什麼不能將函數引用/識別爲for(i = 0; i <9; i ++) –