2011-01-30 70 views
0

我被困在一個令人沮喪的應該很簡單。可能已經在這個時間太長了...卡住了一個愚蠢的javascript數組錯誤

相關代碼:

function stepNetwork() { 
    for(i = 0; i<maxNeurons; i++) { 
     if(neuronArray[i].charge >= neuronArray[i].threshhold) { 
      var elapsed = ((new Date()).getTime()) - neuronArray[i].lastFired; 
      if(elapsed >= 5000){ 
       fireNeuron(i); 
      } 
     } 
    } 
} 

function fireNeuron(n){ 
    //get number of outputs on this neuron 
    var outs = neuronArray[n].outputs.length; 
    for(p = 0; p < outs; p++) { 
     sendChargeTo = neuronArray[n].outputs[p]; 
     addCharge(sendChargeTo); 
    } 
    neuronArray.charge = 0; 
    neuronArray.lastFired = ((new Date()).getTime()); 
} 

function addCharge(n) { 
    neuronArray[n].charge++;//HERES THE ERROR!! 
} 

這裏是螢火告訴我:

neuronArray[n] is undefined ///then why can I see its value in the scripts->watch tab? 
addCharge(n=100)js_operation.php (line 73) 
fireNeuron(n=73)js_operation.php (line 66) 
stepNetwork() 

這讓我的事情是,當我通過一個號碼的作品,當我評估neuronArray,neuronArray[n],neuronArray[n]charge等在腳本窗格(觀察區域),它總是能夠引用它。

+1

你有'神經元陣列。電荷'和'神經元陣列[n]。電荷'的事實可能會出現問題。 – Raynos 2011-01-30 00:43:45

+0

好抓,修正,同樣的問題:( – jason 2011-01-30 02:46:01

回答

1

也許這就是問題所在:

sendChargeTo = neuronArray[n].outputs[p]; 
addCharge(sendChargeTo); 

你不發送addCharge索引,你在發送neuronArray[n].outputs[p]

+0

typeof(sendChargeTo); //返回「number」 – jason 2011-01-30 02:45:18

1

除了Raynos對fireNeuron中最後兩行的評論,我看不到一個明顯的問題。

也許你有全局問題?我認爲變量i,psendChargeTo應該在var處聲明爲本地。