Почему здесь пишет сначало то что я хочу увидеть, а потом 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 шт):
потому что фактически у вас вызывается два алерта. один внутри функции, который выводит день, а второй во внешнем коде, который выводит результат функции. А поскольку у вашей функции нет return, то и получаете соответственное
На всякий случай. Обычно советуют в функциях использовать поменьше побочных эффектов, в том числе выводы в консоль или показы диалоговых окон, лучше выносить это всё за функции. По возможности стоит делать так, чтобы функция просто принимала аргументы и возвращала значения, а уже эти значения можно потом использовать по-разному, в том числе показывать в 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));