-1

Я пытаюсь сделать простой код ниже, но всегда получал следующую ошибку: TypeError: невозможно прочитать свойство 'length' undefined ,TypeError: не удается прочитать свойство 'length' неопределенного (определяется параметром функции)

function multiplyAll(arr) { 


    var product = 1; 

     if (arr === undefined) { 
     return "Undefined Array!"; 
     } else { 


    for (var i = 0; i < arr.length; i++) { 
     for (var j = 0; j < arr[i].length; i++) { 
     product *= arr[i][j]; 
     } 
    } 
    return product; 


    } 
    } 


    multiplyAll([[7,2],[6,4],[5,8,9]]); 

В чем проблема?

+1

Вы проверяете 'ли не определено arr', но не' ли [я] 'является обр неопределенными .. – Blorgbeard

+0

В самом деле, многие наши код делает меня слепым. Я действительно увеличивал 'i' вместо' j' во втором цикле. –

ответ

4

Это, как представляется копия ошибка & паста/опечатки:

for (var i = 0; i < arr.length; i++) { 
     for (var j = 0; j < arr[i].length; i++) 

Во внутреннем цикл, вы приращение i вместо j. Вы уходите от конца массива, делая arr[i] undefined.

Возможно, вы решили это, проверив значения i и j с помощью отладчика или позвонив по телефону console.log. Вы бы заметили, что i был приращением слишком быстро, в то время как j остался на 0.