@atsin4469

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

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

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


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


Непонятно, почему "undefined".
  • Вопрос задан
  • 879 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
console.log(""[0])
// undefined
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
samodum
@samodum
Какой вопрос - такой и ответ
Чему text равен?
Полагаю, что undefined. Потому и ошибка
Ответ написан
Комментировать
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 необходимо добавить
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы