Синтаксическая ошибка Codecademy howOld в else if

Как новичок в программировании, я всегда борюсь с синтаксисом в своих упражнениях по Javascript в Codecademy. Это моя первая проблема, которую я не смог решить без помощи интернет-поиска - мои извинения, если это уже решено здесь.

Обычно я нахожусь в точке с запятой от ее решения, но не в этот раз (?). Я пытаюсь учесть 3 результата:

  1. кто-то вводит год в будущем, и я говорю им их возраст в этом году.

  2. кто-то вводит год до своего рождения, а я даю им количество лет до их рождения.

  3. кто-то вводит через год после их рождения, а я даю им их возраст на тот момент.

Я потратил слишком много времени на перемещение фигурных скобок и точек с запятой, и я просто не вижу ошибки.

const howOld = (age, year) =>

 {
  if 
    (year > 2019);
    let calculatedAge = ( year - 2019 + age );
  {
  return `You will be ${calculatedAge } in the year ${year}.`;

  } else if 
    (year < (2019-age));
    let calculatedAge = ( 2019 - year + age ); 
  {
  return `The year ${year } was ${calculatedAge } years before you were 
born.`;

  } else 
    let calculatedAge = ( year - 2019 + age );
  { 
  return `You were ${calculatedAge} in the year ${year}. `; 
  }

};

console.info(howOld(47,2000))

Я получаю синтаксическую ошибку в своем операторе else if.

Точка с запятой после ; неверна, а также переместите все {} на один шаг вверх. Значит let calculatedAge = ... должен быть в {}

Maheer Ali 28.05.2019 16:49

На этот раз слишком много точки с запятой. В JavaScript выражения if не заканчиваются точкой с запятой.

dRoyson 28.05.2019 16:51

Не собираюсь решать это за вас, но я дам некоторые подсказки. Помните, что «если» — это только начало блока, и для него нужно какое-то условие. «Если это, то это». «Это» может быть списком того, что нужно сделать. «Еще» — это та же идея — это не что-то из условия «если», так что давайте сделаем что-нибудь другое. Кроме того, условие в операторе if само по себе ничего не значит, поэтому нет причин заканчивать эту идею точкой с запятой.

Wonko the Sane 28.05.2019 16:51

Я рекомендую вам взглянуть на средство форматирования кода Prettier, которое поможет отформатировать код, чтобы его было легче понять. Он доступен в VS Code и Atom.

strange_developer 28.05.2019 16:58

Отличная помощь и быстро тоже спасибо! Я тоже перепутал одну формулу, но это было легко исправить после того, как я выровнял синтаксис.

Darryl Calder 28.05.2019 17:51
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
54
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Это должно сделать это

    const howOld = (age, year) =>

 {
  if (year > 2019)
  {
    let calculatedAge = ( year - 2019 + age );
    return `You will be ${calculatedAge } in the year ${year}.`;

  } 
  else if (year < (2019-age))
  {  
    let calculatedAge = ( 2019 - year + age ); 
    return `The year ${year } was ${calculatedAge } years before you were born.`;
  } 
  else
  {
    let calculatedAge = ( year - 2019 + age ); 
    return `You were ${calculatedAge} in the year ${year}. `; 
  }

};

console.info(howOld(47,2000))

Чтобы объяснить свою ошибку, у вас был неправильный оператор if вместо того, чтобы иметь

if (condition){do}

у вас

if (condition);do{do}

для получения дополнительной информации вы можете проверить здесь w3schools.com/js/js_if_else.asp

Javier Heisecke 28.05.2019 16:52

Мне не удалось включить оператор let в тело функции (или фигурные скобки) и ошибочно добавить точку с запятой в конце моих операторов if. Спасибо!

Darryl Calder 28.05.2019 17:39

не беспокойтесь, удачи в программировании, я рекомендую прочитать w3schools.com/js, это поможет понять JS и другие языки.

Javier Heisecke 28.05.2019 17:54

Вы можете немного изменить свои операторы if/else. Вы были близки, просто немного перепутали условия и скобки.

Вы хотите убедиться, что у вас есть такой синтаксис:

if (condition)
{
    // do something
} else if (condition)
{
    // do something else
}

Попробуйте это решение:

const howOld = (age, year) =>

{
  if (year > 2019)
  {
      let calculatedAge = ( year - 2019 + age );
      return `You will be ${calculatedAge } in the year ${year}.`;
  } else if (year < (2019-age))
  {
      let calculatedAge = ( 2019 - year + age ); 
      return `The year ${year } was ${calculatedAge } years before you were born.`;
  } else
  {
      let calculatedAge = ( year - 2019 + age );
      return `You were ${calculatedAge} in the year ${year}. `; 
  }

};

console.info(howOld(47,2000))

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

const howOld = (age, year) => {
  if (year > 2019);
    let calculatedAge = ( year - 2019 + age );
  {
  return `You will be ${calculatedAge } in the year ${year}.`;

  } else if (year < (2019-age));
    let calculatedAge = ( 2019 - year + age );
  {
  return `The year ${year } was ${calculatedAge } years before you were born.`;

  } else
    let calculatedAge = ( year - 2019 + age );
  {
  return `You were ${calculatedAge} in the year ${year}. `;
  }

};

Правильная версия:

const howOld = (age, year) => {
    if (year > 2019){
      let calculatedAge = ( year - 2019 + age );
      return `You will be ${calculatedAge } in the year ${year}.`;
    } else if (year < (2019-age)) {
      let calculatedAge = ( 2019 - year + age );
      return `The year ${year } was ${calculatedAge } years before you were born.`;
    } else {
      let calculatedAge = ( year - 2019 + age );
      return `You were ${calculatedAge} in the year ${year}.`;
    }
  };
console.info(howOld(47,2000))

Другие вопросы по теме