Почему функции неверно сравнивает массивы?

У меня есть следующая функция для сравнения массивов:

a = [1,'a']
b = [1,'b']

function compareArrays(arr1, arr2) {
    let c = 0;
        if (arr1.length == arr2.length) {
        for(let i = 0; i <= arr1.length; i++) {
                if (arr1[i] === arr2[i]) {
                    c++;
                console.log(c)
            }
        }
        
        if (c === arr1.length) {
                return true;
        }
    } return false;
}


 console.log(compareArrays(a, b)) 

Я ожидаю получить false, так как вторые элементы массивов не совпадают, но получаю true. Почему и как это исправить?


Ответы (1 шт):

Автор решения: Алексей Шиманский

Проблема в условии i <= arr1.length. В результате цикл выполняется 3 раза, а не 2. И получаем доп условие if (undefined === undefined ) { c++

Чтобы находить такие ошибки учитесь Отладке кода

→ Ссылка