Ошибка массива javascript: массив [n] не определен - PullRequest
0 голосов
/ 30 января 2011

соответствующий код:

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!!
}

Вот что говорит мне firebug:

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 и т. Д. На панели сценариев (область просмотра), она всегда может ссылаться на нее.

Ответы [ 2 ]

1 голос
/ 30 января 2011

Может быть, это проблема:

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

Вы не отправляете addCharge индекс, вы отправляете его neuronArray[n].outputs[p].

0 голосов
/ 30 января 2011

Помимо комментариев Райноса о последних двух строках в fireNeuron Я не вижу очевидной проблемы.

Возможно, у вас есть глобальная проблема? Я думаю, что переменные i, p и sendChargeTo должны быть объявлены локальными с var.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...