Почему Chrome дает мне TypeError при поиске наибольшего числа в массиве? - PullRequest
0 голосов
/ 07 мая 2018

У меня есть следующий код, чтобы найти наибольшее число в массиве:

function max(input) {
 var maxNum = 0;
 for(var i = 0; i <= input.length; i++) {
     if(maxNum < input[i]) {
         maxNum = input[i];
        }
    }
    return maxNum;
}
max([1, 2, 3, 7]);

Когда я запускаю его в Google Chrome, Edge или Firefox, я получаю:

max.js:20 Uncaught TypeError: Cannot read property 'length' of undefined
    at max (max.js:20)
    at <anonymous>:1:1

но когда я запускаю его на pythontutor для JavaScript, я получаю правильные результаты без синтаксической ошибки.

1 Ответ

0 голосов
/ 07 мая 2018

этот тип ошибки очень явный

он говорит, что не может вычислить длину неопределенного свойства.

Если вы внимательно посмотрите, ваши итерации будут такими:

for(var i = 0; i <= input.length; i++) {

вы передаете массив с 4 элементами, но индексы идут от 0 до 3 input.length, который дает вам размер массива, равный 4 , поэтому при вводе .length для последнего элемента, если не удалось

возьмите равное:

for(var i = 0; i < input.length; i++) {

Надеюсь, это поможет!

...