Как новичок в программировании, я всегда борюсь с синтаксисом в своих упражнениях по Javascript в Codecademy. Это моя первая проблема, которую я не смог решить без помощи интернет-поиска - мои извинения, если это уже решено здесь.
Обычно я нахожусь в точке с запятой от ее решения, но не в этот раз (?). Я пытаюсь учесть 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.
На этот раз слишком много точки с запятой. В JavaScript выражения if
не заканчиваются точкой с запятой.
Не собираюсь решать это за вас, но я дам некоторые подсказки. Помните, что «если» — это только начало блока, и для него нужно какое-то условие. «Если это, то это». «Это» может быть списком того, что нужно сделать. «Еще» — это та же идея — это не что-то из условия «если», так что давайте сделаем что-нибудь другое. Кроме того, условие в операторе if само по себе ничего не значит, поэтому нет причин заканчивать эту идею точкой с запятой.
Я рекомендую вам взглянуть на средство форматирования кода Prettier
, которое поможет отформатировать код, чтобы его было легче понять. Он доступен в VS Code и Atom.
Отличная помощь и быстро тоже спасибо! Я тоже перепутал одну формулу, но это было легко исправить после того, как я выровнял синтаксис.
Это должно сделать это
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
Мне не удалось включить оператор let в тело функции (или фигурные скобки) и ошибочно добавить точку с запятой в конце моих операторов if. Спасибо!
не беспокойтесь, удачи в программировании, я рекомендую прочитать w3schools.com/js, это поможет понять JS и другие языки.
Вы можете немного изменить свои операторы 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))
Точка с запятой после
;
неверна, а также переместите все{}
на один шаг вверх. Значитlet calculatedAge = ...
должен быть в{}