javascript数组错误:array [n]未定义

时间:2011-01-30 00:39:04

标签: javascript arrays reference

相关代码:

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()

让我感到惊讶的是,当我传递一个数字时,它会起作用,当我评估neuronArrayneuronArray[n]neuronArray[n]时。 <脚本窗格(监视区域)中的charge等,它始终能够引用它。

2 个答案:

答案 0 :(得分:1)

也许这就是问题:

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

您没有发送addCharge索引,而是发送neuronArray[n].outputs[p]

答案 1 :(得分:0)

除了Raynos关于fireNeuron中最后两行的评论,我看不出明显的问题。

也许你有全局问题?我认为变量ipsendChargeTo应该使用var声明为本地。