Зарезервированное i равное undefined [требует правки]

161
07 июня 2018, 16:50

Отладчик пишет, что i,j,m в цикле for равно undefined, но при этом я i зарезервировал. Сам код:

var wordNumber = 0;
    function createNumberAndDoArr() {
        while (wordNumber < 100)
            wordNumber = Math.floor(Math.random() * 1000);
        word = wordNumber + "";
        var arrWord = word.split("");
        return arrWord;
    };
    function compare() {
        var arrWord = createNumberAndDoArr()
        var k = 0;
        result = (document.forms["form"].elements["numbers"].value + "").split("");
        while (k !== 0) {
            for (var i = 0, j = 0, m = 0; i < word.length; i++) {
                if ((arrWord[i] == result[k]) && (i == k)) {
                    j++;
                }   else if ((arrWord[i] == result[k]) && !(i == k)) {
                    m++;
                }
            }
            k++;
        }
        return[j, m];
    }
Answer 1

Ваш код эквивалентен:

function compare() {
    var arrWord = createNumberAndDoArr()
    var k = 0;
    var i, j, m; // здесь они undefined
    result = (document.forms["form"].elements["numbers"].value + "").split("");
    while (k !== 0) {
        // сюда мы не попадаем, так как k - ноль
        for (i = 0, j = 0, m = 0; i < word.length; i++) {
            if ((arrWord[i] == result[k]) && (i == k)) {
                j++;
            }   else if ((arrWord[i] == result[k]) && !(i == k)) {
                m++;
            }
        }
        k++;
    }
    return[j, m]; // вернет [undefined, undefined]
}
READ ALSO
Почему не отправляется запрос на сервер?

Почему не отправляется запрос на сервер?

Есть небольшое приложение на React, функционал: регистрация новых пользователей и восстановление пароляС регистрацией все ок (на локальном...

156
Как сравнить две даты без учета GMT?

Как сравнить две даты без учета GMT?

На сервер приходит дата

147