I’m working through the trainingDays project here: https://www.codecademy.com/courses/introduction-to-javascript/projects/training-days
and here’s the code for it:
// The scope of `random` is too loose
const getRandEvent = () => {
const random = Math.floor(Math.random() * 3);
if (random === 0) {
return 'Marathon';
} else if (random === 1) {
return 'Triathlon';
} else if (random === 2) {
return 'Pentathlon';
}
};
// The scope of `days` is too tight
const getTrainingDays = event => {
let days;
if (event === 'Marathon') {
days = 50;
} else if (event === 'Triathlon') {
days = 100;
} else if (event === 'Pentathlon') {
days = 200;
}
return days;
};
const name = 'Nala';
// The scope of `name` is too tight
const logEvent = event => {
console.log(`${name}'s event is: ${event}`);
};
const logTime = days => {
console.log(`${name}'s time to train is: ${days} days`);
};
const event = getRandEvent();
const days = getTrainingDays(event);
// Define a `name` variable. Use it as an argument after updating logEvent and logTime
logEvent(event);
logTime(days);
const event2 = getRandEvent();
const days2 = getTrainingDays(event2);
const name2 = 'Warren';
logEvent(name2, event2);
logTime(name2, days2);
and I get this in return:
Nala's event is: Triathlon
Nala's time to train is: 100 days
Nala's event is: Warren
Nala's time to train is: Warren days
the calls for logEvent and logTime for the first person, Nala looks right. The calls for event2 and name2 for Warren are somehow mixing up Nala and Warren. Is scope getting messed up?