/
Вопросы и ответы
/
JavaScript
/

Ошибка Cannot read property 'toUpperCase' of undefined в JavaScript

Ошибка Cannot read property 'toUpperCase' of undefined в JavaScript

При вызове функции:

export const toUpperCase = str => str.toUpperCase();

появляется ошибка:

TypeError: Cannot read property 'toUpperCase' of undefined

Хотя я передаю строку в функцию, иногда возникает undefined. Почему так происходит и как это исправить?

7 часов назад

Nikolai Gagarinov

Ответы

0

Эта ошибка появляется, когда на вход функции передается undefined вместо строки. Метод toUpperCase существует только у строк, поэтому попытка вызвать его у undefined приводит к TypeError.

Возможные причины:

  1. Неправильный индекс при обращении к символу строки

    Если вы делаете что-то вроде toUpperCase(str[i]), убедитесь, что i находится в пределах длины строки:

    for (let i = 0; i < str.length; i++) {
        console.log(str[i]); // проверяем значение
    }

    Любой выход за пределы массива символов вернет undefined.

  2. Передача в функцию не строки

    Проверьте, что вы действительно передаете строку, а не результат другой функции или переменную, которая может быть undefined.

  3. Отладка через console.log

    Перед вызовом toUpperCase выводите значение:

    console.log('current value:', str[i]);
    toUpperCase(str[i]);

    Это поможет увидеть, где появляется undefined.

  4. Особенности сравнения символов

    Если нужно проверять отдельные символы на верхний регистр, можно делать так:

    if (str[i] && str[i].toUpperCase() === str[i]) {
        // символ в верхнем регистре
    }

Это защитит от undefined.

Основная идея: ошибка не в самой функции toUpperCase, а в том, что в неё иногда попадает undefined. Нужно отследить, откуда это undefined приходит, и ограничить диапазон индексов или проверить значения до вызова метода.

Для сложных алгоритмов полезно разбирать код построчно, описывать действия переменных и использовать пошаговую отладку, чтобы выявить точное место возникновения undefined.

7 часов назад

Nikolai Gagarinov