@atsin4469

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

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

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


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


Непонятно, почему "undefined".
  • Вопрос задан
  • 102 просмотра
Решения вопроса 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 необходимо добавить
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Intspirit Краснодар
от 80 000 до 150 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽