Почему здесь пишет сначало то что я хочу увидеть, а потом undefined?

function checkDayWeek(day) {
     switch(day) {
        case 1:
       return alert("Monday")
        case 2:
      return  alert("Tuesday");
        case 3:
       return alert("Wednesday");
        case 4:
      return  alert("Thursday");
        case 5:
       return alert("Friday");
        case 6:
       return alert("Saturday");
        case 7:
       return alert("Sunday");
        
       default: alert("It's not a day of week");
    }
}

let day = +prompt("Please, write day of week 1-7: ", 0);
alert(checkDayWeek(day))

Хочу вводить значения не через checkDayWeek(...) а именно через prompt, все работает, но выскакивает после завершения undefined, скажите пожалуйста из-за чего ? Я пока только учусь, не судите строго пожалуйста.


Ответы (2 шт):

Автор решения: teran

потому что фактически у вас вызывается два алерта. один внутри функции, который выводит день, а второй во внешнем коде, который выводит результат функции. А поскольку у вашей функции нет return, то и получаете соответственное

→ Ссылка
Автор решения: vsemozhebuty

На всякий случай. Обычно советуют в функциях использовать поменьше побочных эффектов, в том числе выводы в консоль или показы диалоговых окон, лучше выносить это всё за функции. По возможности стоит делать так, чтобы функция просто принимала аргументы и возвращала значения, а уже эти значения можно потом использовать по-разному, в том числе показывать в alert(). Поэтому вам лучше не внешний alert() убирать, а внутренние (заодно код чуть сократится и упростится — вместо восьми alert() у вас останется только один):

function checkDayWeek(day) {
  switch(day) {
    case 1:
      return "Monday";
    case 2:
      return "Tuesday";
    case 3:
      return "Wednesday";
    case 4:
      return "Thursday";
    case 5:
      return "Friday";
    case 6:
      return "Saturday";
    case 7:
      return "Sunday";

    default:
     return "It's not a day of week";
  }
}

const day = +prompt("Please, write day of week 1-7: ", 0);
alert(checkDayWeek(day));

→ Ссылка