else

Напишем функцию getDescriptionOfSentence(), которая анализирует текст и возвращает описание его тона: для обычных предложений – General sentence, для вопросительных – Question sentence.

  getTypeOfSentence('Hodor');  // General sentence
  getTypeOfSentence('Hodor?'); // Question sentence

Реализация функции:

const getTypeOfSentence = (sentence) => {
  let sentenceType;
  // Предикат проверяющий окончание текста
  // Если он оканчивается на символ '?', то вернется true,
  // иначе false
  if (sentence.endsWith('?')) {
    sentenceType = 'Question';
  } else {
    sentenceType = 'General';
  }

  return `${sentenceType} sentence`;
}

Мы добавили ключевое слово else и новый блок с фигурными скобками. Этот блок выполнится только если условие в if — ложь.

Существует два способа оформления конструкции if-else. С помощью отрицания можно изменить порядок блоков:

const getTypeOfSentence = (sentence) => {
  let sentenceType;
  // Добавилось отрицание
  // Содержимое else переехало в if и наоборот
  if (!sentence.endsWith('?')) {
    sentenceType = 'General';
  } else {
    sentenceType = 'Question';
  }

  return `${sentenceType} sentence`;
}

Какой способ предпочтительнее? Человеческому мозгу проще мыслить прямолинейно, а не через отрицание. Всегда старайтесь выбирать проверку, которая не содержит отрицаний, и подстраивайте содержимое блоков под нее.

Задание

Реализуйте функцию buildUrl(), которая принимает на вход адрес страницы (без указания домена) и имя домена, а возвращает полный url со схемой https.

Примеры вызова:

buildUrl('pages/about', 'hexlet.io'); // 'https://hexlet.io/pages/about'
buildUrl('/pages/about', 'hexlet.io'); // 'https://hexlet.io/pages/about'

// Для главной страницы слэш в конце обязателен
buildUrl('/', 'ru.code-basics.com'); // 'https://ru.code-basics.com/'
buildUrl('', 'ru.code-basics.com'); // 'https://ru.code-basics.com/'

Первым параметром в функцию могут быть переданы адреса с ведущим слешом / и без него. Задача функции обрабатывать эту ситуацию, чтобы слеш не дублировался.

Для реализации этой функции вам могут понадобится функции slice() и startsWith()


Определения

  • else — способ задать блок кода, который будет выполнен если условие с if не удовлетворено


Нашли ошибку? Есть что добавить? Пулреквесты приветствуются https://github.com/hexlet-basics
Если вы столкнулись с трудностями и не знаете, что делать, задайте вопрос в нашем большом и дружном cообществе
Упражнение доступно только авторизованным пользователям.

Пожалуйста, авторизуйтесь, это необходимо для отслеживания прогресса выполнения уроков. Если у вас ещё нет учётной записи, то сейчас самое время создать аккаунт.