JavaScript. 2 ошибки Uncaught ReferenceError

109
12 ноября 2019, 03:40

Новичок в JavaScript. Не могу понять в чем проблема. Выдает две ошибки(не я их тестировал, я просто написал код):

  1. selectPage(sdfsdf, sdf, dfg)

Uncaught ReferenceError: sdfsdf is not defined at :1:12

  1. selectPage(0, 0, 0)

Uncaught ReferenceError: result is not defined

Кроме как сделать проверку параметров на ноль, я не знаю, что делать.

function selectPage(total, pageSize, selected) {    
    // Количество всех страниц  
    var pageCount = Math.ceil(total / (pageSize * 1.0));
    var result = [];
    // Если возможно создается массив на 10 страниц. Т.к. это максимальное количество страниц в гугле
    // Количество страниц от выбранной страницы:
    // Слева = 5
    // Справа = 4
    if (pageCount > 10) {
        // Если selected меньше 7 - просто заполнятся массив от 1 до 10
        if (selected < 7) {
            result = createArray(1, 10);
        }
        // Если справа от selected есть больше, чем 3 страницы
        else if (pageCount - selected > 3) {
            result = createArray(selected - 5, 10);
        }
        // Иначе заполняется массив "с конца"
        else {
            result = createArray(pageCount - 9, 10);
        }
    }
    else {
        // Иначе просто заполнятся массив на количество страниц
        result = createArray(1, pageCount);
    }
    return result;
}
function createArray(startValue, size) {
    for (var i = 0; i < size; i++) {
        result[i] = startValue;
        startValue++;
    }
    return result;
}
Answer 1

Первая ошибка

Передаваемые аргументы (sdfsdf, sdf, dfg) воспринимаются интерпретатором, как переменные. Очевидно, что такие переменные у вас нигде не определены. Если же вы хотите передать текст, то нужно оборачивать в кавычки - ("sdfsdf", "sdf", "dfg").

В данном конкретном случае ваша функция selectPage() ожидает передачу чисел.

Вторая ошибка

В области видимости функции createArray() нет переменной result. Она определена только в функции selectPage. Для того, чтобы ошибки не было, во вторую функцию, - createArray(), - необходимо передавать переменную result.

Обе ошибки связаны с отсутствием необходимых переменных. Поэтому и сообщения об ошибках - Reference errors.

Ниже приводится исправленная версия Вашего кода.

function selectPage(total, pageSize, selected) {     
    // Количество всех страниц`   
    var pageCount = Math.ceil(total / (pageSize * 1.0)); 
 
    var result = []; 
 
    // Если возможно создается массив на 10 страниц. Т.к. это максимальное количество страниц в гугле 
    // Количество страниц от выбранной страницы: 
    // Слева = 5 
    // Справа = 4 
    if (pageCount > 10) { 
 
        // Если selected меньше 7 - просто заполнятся массив от 1 до 10 
        if (selected < 7) { 
            result = createArray(1, 10, result); 
        } 
        // Если справа от selected есть больше, чем 3 страницы 
        else if (pageCount - selected > 3) { 
            result = createArray(selected - 5, 10, result); 
        } 
        // Иначе заполняется массив "с конца" 
        else { 
            result = createArray(pageCount - 9, 10, result); 
        } 
    } 
    else { 
        // Иначе просто заполнятся массив на количество страниц 
        result = createArray(1, pageCount, result); 
    } 
 
    return result; 
} 
 
function createArray(startValue, size, result) { 
    for (var i = 0; i < size; i++) { 
        result[i] = startValue; 
        startValue++; 
    } 
    return result; 
} 
 
console.log(selectPage(10, 0, 0));

READ ALSO
Как сделать динамические роуты?

Как сделать динамические роуты?

Добрый день пишу приложение на VueJS, и столкнулся с проблемой, на определенной страницы есть datePicker, с помощью клика я беру оттуда дату и пересылаю...

114
JavaScript передача object HtmlVideoElement

JavaScript передача object HtmlVideoElement

Получаю доступ к камере пользователя следующим кодом:

99
Фильтрация массива в JS

Фильтрация массива в JS

Есть два массива:

105
не работает overflow:hidden у body и html на iPhone

не работает overflow:hidden у body и html на iPhone

есть событие на открытие модального окнапри открытии окна у html и body должен блокироваться скролл (используем overflow:hidden), но он не работает именно...

106