#javascript #function
#javascript #функция
Вопрос:
Моя функция JavaScript продолжает возвращать undefined
под правильным выходным значением.
let grade;
function getGrade(score) {
// Write your code here
if (score >= 25 amp;amp; score <= 30) {
console.log('A');
}
else if (score >= 20 amp;amp; score <= 25) {
console.log('B');
}
else if (score >= 15 amp;amp; score <= 20) {
console.log('C');
}
else if (score >= 10 amp;amp; score <= 15) {
console.log('D');
}
else if (score >= 5 amp;amp; score <= 10) {
console.log('E');
}
else {
console.log('F');
}
return grade;
}
Комментарии:
1. Какой ожидаемый вывод и что такое ввод?
2. это потому, что вы не определили, что
grade
такое. Вы можете установить это в своих операторах if, затемreturn
3. вы возвращаетесь
grade
, но где вы его объявляете и заполняете?4. даже после объявления
let grade;
снаружи, что вы с этим делаете.. почему он не должен возвращать undefined?5. OP действительно объявлял
grade
, но он был опущен из блока кода, потому что в разметке отсутствовал символ новой строки после трех «.
Ответ №1:
Вы не определили свой grade
. И так будет всегда undefined
.
Один из способов сделать это заключается в следующем:
function getGrade(score) {
var grade = "";
// Write your code here
if (score >= 25 amp;amp; score <= 30) {
grade = "A";
}
else if (score >= 20 amp;amp; score <= 25) {
grade = "B";
}
else if (score >= 15 amp;amp; score <= 20) {
grade = "C";
}
else if (score >= 10 amp;amp; score <= 15) {
grade = "D";
}
else if (score >= 5 amp;amp; score <= 10) {
grade = "E";
}
else {
grade = "F";
}
return grade;
}
console.log(getGrade(27))
Ответ №2:
Кажется, что у вас есть return grade;
внизу, но grade
, похоже, нигде не определено.
Ответ №3:
Вам следует установить значение вашей переменной «grade» или просто удалить
return grade;
Ответ №4:
Всегда проверяйте консоль. В данный момент он поет вам, сообщая, что grade
не определено.
Вы пытаетесь вернуть что-то, чему вы не присвоили значение.
function getGrade(score) {
// ... //
return grade; //<-- nowhere do you define grade
}
Должно быть
function getGrade(score) {
let grade;
if (score >= 25 amp;amp; score <= 30) grade = 'A';
else if (score >= 20 amp;amp; score <= 25) grade = 'B';
else if (score >= 15 amp;amp; score <= 20) grade = 'C';
else if (score >= 10 amp;amp; score <= 15) grade = 'D';
else if (score >= 5 amp;amp; score <= 10) grade = 'E';
else grade = 'F';
console.log(grade);
return grade;
}
Комментарии:
1. Большое спасибо, сэр, теперь я понял.
2. Пожалуйста. Пожалуйста, примите один из ответов, если вы считаете его правильным.
Ответ №5:
Используйте return
вместо console.log()
function getGrade(score) {
if (score >= 25 amp;amp; score <= 30) {
return 'A'
}
else if (score >= 20 amp;amp; score <= 25) {
return 'B'
}
else if (score >= 15 amp;amp; score <= 20) {
return 'C';
}
else if (score >= 10 amp;amp; score <= 15) {
return 'D';
}
else if (score >= 5 amp;amp; score <= 10) {
return 'E';
}
else {
return 'F';
}
}
console.log(getGrade(20))
Поскольку существует разница в 5
ч / б каждом диапазоне оценок, поэтому вы можете использовать разделение и Math.floor
function getGrade(score) {
let grades = 'FEDCBA'
return score === 30 ? 'A' : grades[Math.floor((score)/5)]
}
console.log(getGrade(20))
console.log(getGrade(19))
console.log(getGrade(30))