Задать вопрос
@atsin4469

Почему возникает TypeError?

Задание
Реализуйте функцию convertText(), которая принимает на вход строку и, если первая буква не заглавная, возвращает перевернутый вариант исходной строки. Если первая буква заглавная, то строка возвращается без изменений.
reverse() импортируется

Решение
const convertText = (text) => (text[0].toUpperCase() === text[0] || text === '' ? text : reverse(text));


Ошибка
TypeError: Cannot read property 'toUpperCase' of undefined


Непонятно, почему "undefined".
  • Вопрос задан
  • 1063 просмотра
Подписаться 1 Простой 5 комментариев
Ответ пользователя Kirill Mager К ответам на вопрос (3)
magerrrr
@magerrrr
JS Software Engineer
В Вашем случае когда в массиве значение под индексом 0 равно undefined функция вылетает с ошибкой.
Для того, чтобы избежать такого поведения необходимо добавить проверку на undefined

В вашей функции это будет выглядеть следующим образом:
const convertText2 = (text) => {

  if (text[0] === undefined) {
    return 'Undefined value!';
  }

   return text[0].toUpperCase() === text[0] || text === '' ? text : reverse(text)
};


по хорошему перед тем как писать логику функции Вам необходимо проверить что text это массив (text.isArray()), раз Вы обращаетесь к его первому элементу.
+ раз уж это массив, а Вы дальше будете писать логику по прохождению каждого элемента массива, то перед этой логикой для каждого элемента проверку на undefined и null необходимо добавить
Ответ написан
Комментировать