2011-01-30 31 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处声明为本地。