getting same output name even after setting up different scope

Viewed 23

I'm attaching the code below, for the line in the end logTime(name2, day2); I'm getting the same name for for the first scope. For logEvent I'm getting desired result which is warren, but for logTime I'm getting Nala instead of warren. Thank you in advanced


// The scope of `random` is too loose 
const random = Math.floor(Math.random() * 3);

const getRandEvent = () => {
  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 = (name, event) => { 
  console.log(`${name}'s event is: ${event}`);
};

const logTime = (names, 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(name, event);
logTime(name, days);

const event2 = getRandEvent();
const days2 = getTrainingDays(event2);
const name2 = 'Warren';
 
logEvent(name2, event2);
logTime(name2, days2);
1 Answers

change the name in the log to names or change the variable names in the method argument to name

const logTime = (name, days) => {  
  console.log(`${name}'s time to train is: ${days} days`);
};

or

const logTime = (names, days) => {  
  console.log(`${names}'s time to train is: ${days} days`);
};
Related