Javascript switch语句可以在函数中吗?

Javascript switch语句可以在函数中吗?,javascript,function,Javascript,Function,我试图写一个程序,输入一个学生的平均值,如果学生的平均值是90-100,则返回:-a -B如果学生的平均成绩是80-89分 -C如果学生的平均成绩为70-90分 -D如果学生的平均成绩是60-69 -E如果学生的平均值为0-59 -如果平均值不在0和100之间,则显示“无效输入” 首先,应要求用户输入学生的平均值,验证平均值(=值应在1-100之间),然后:-如果有效,调用函数根据平均值确定并返回a、B、C、D或E。-如果平均值无效或用户按下“取消”按钮,则显示警报消息并退出程序 以下是我目前的

我试图写一个程序,输入一个学生的平均值,如果学生的平均值是90-100,则返回:-a -B如果学生的平均成绩是80-89分 -C如果学生的平均成绩为70-90分 -D如果学生的平均成绩是60-69 -E如果学生的平均值为0-59 -如果平均值不在0和100之间,则显示“无效输入”

首先,应要求用户输入学生的平均值,验证平均值(=值应在1-100之间),然后:-如果有效,调用函数根据平均值确定并返回a、B、C、D或E。-如果平均值无效或用户按下“取消”按钮,则显示警报消息并退出程序

以下是我目前的代码:

var myAvg = prompt("Please enter your grade percentage",0) 

if ( isNaN(myAvg) || myAvg < 1 || myAvg > 100 ) { 
    alert("Average must be a percentage value. Please re-enter your grade again."); 
}

function myAvg (gradeA,gradeB,gradeC,gradeD,gradeE) { 

  switch (true) {

    case (myAvg >= 90 && myAvg < 100):
         document.write("Your grade is an myAvg<br />" );
         document.write(gradeA + " " );
         break;

    case (myAvg >= 80 && myAvg < 89):
         document.write("Your grade is an myAvg<br />" );
         break;

    case (myAvg >= 70 && myAvg < 79):
        document.write("Your grade is an myAvg<br />" );
        break;

    case (myAvg >= 60 && myAvg < 69):
        document.write("Your grade is an myAvg<br />" );
        break;

    case (myAvg >= 0 && myAvg < 59):
        document.write("Your grade is an myAvg<br />" );
        break;

    default: document.write("Please enter a valid percentage<br />");

  }
}

myAvg("gradeA", "B", "C", "D", "E" );
var myAvg=prompt(“请输入您的分数百分比”,0)
如果(isNaN(myAvg)| | myAvg<1 | | myAvg>100){
警告(“平均值必须是一个百分比值。请重新输入您的分数。”);
}
函数myAvg(gradeA,gradeB,gradeC,gradeD,gradeE){
开关(真){
案例(myAvg>=90&&myAvg<100):
记录。写下(“你的成绩是myAvg
”; 文件。书写(成绩A+“”); 打破 案例(myAvg>=80&&myAvg<89): 记录。写下(“你的成绩是myAvg
”; 打破 案例(myAvg>=70&&myAvg<79): 记录。写下(“你的成绩是myAvg
”; 打破 案例(myAvg>=60&&myAvg<69): 记录。写下(“你的成绩是myAvg
”; 打破 案例(myAvg>=0&&myAvg<59): 记录。写下(“你的成绩是myAvg
”; 打破 默认值:document.write(“请输入有效百分比
”); } } myAvg(“A级”、“B级”、“C级”、“D级”、“E级”);
这是您的代码在稍微修复后所做的:

function myAvg (average, gradeA,gradeB,gradeC,gradeD,gradeE) { switch (true) {
   document.write("Your grade is an average<br />" );
   if (average >= 90){
      document.write(gradeA + " " );
   } else if  (average >= 80){
      document.write(gradeB + " " );
   } else if  (average >= 70){
      document.write(gradeC + " " );
   } else if  (average >= 60){
      document.write(gradeD + " " );
   } else {
      document.write(gradeE + " " );
   }
}

var average = prompt("Please enter your grade percentage",0)
if ( isNaN(average) || average < 0 || average > 100 ) { 
  alert("Average must be a percentage value. Please re-enter your grade again."); 
} else {
  myAvg(average, "A", "B", "C", "D", "E" );
}
函数myAvg(平均、等级A、等级B、等级C、等级E){开关(真){
记录。写下(“你的分数是平均的
”); 如果(平均值>=90){ 文件。书写(成绩A+“”); }否则,如果(平均值>=80){ 文件。书写(B+级“); }否则,如果(平均值>=70){ 文件。书写(C级+“”); }否则,如果(平均值>=60){ 文件。书写(评分+“”); }否则{ 文件。书写(成绩+“”); } } var average=提示(“请输入您的分数百分比”,0) 如果(isNaN(平均值)| |平均值<0 | |平均值>100){ 警告(“平均值必须是一个百分比值。请重新输入您的分数。”); }否则{ 平均年收入(平均“A”、“B”、“C”、“D”、“E”); }

您可以在函数中使用switch语句,但是您没有正确地使用它,您不能将条件放入这样的开关/案例中。这是if/else if的任务。第二,因为您已经确定平均值>=0,,这是您所做操作的修改版本。我将其与您所做的操作保持非常接近,但这是我分解部分的方式。要使其工作,您还需要在中添加一个divhtml(我不喜欢使用“document.write”):


不过,如果您愿意,您可以替换该部分。有更好的方法可以与其他库一起完成这些工作,但这应该会对您有所帮助

    function getGrade(score, grades) {
        grades = grades || [
            {
                min: 90,
                grade: 'A'
            },
            {
                min: 80,
                grade: 'B'
            },
            {
                min: 70,
                grade: 'C'
            },
            {
                min: 60,
                grade: 'D'
            },
            {
                min: 0,
                grade: 'F'
            }
       ];
        for (var i in grades.length) {
            if (score >= grades[i].min) return grades[i].grade;
        }
        return;
    }

    function showGrade(score) {
        var grade = getGrade(score);
        document.getElementById('message').innerHTML = "Your grade is: " + grade;
    }

    function getScore() {
        var score = prompt("Please enter your grade percentage", 0);
        if (isNaN(score) || score < 0) {
            alert("Average must be a percentage value. Please re-enter your grade percentage.");
            getScore();
        } else {
            showGrade(score);
        }
    }
    getScore();
函数getGrade(分数、等级){
等级=等级| |[
{
最小:90,
成绩:“A”
},
{
民:80,,
成绩:“B”
},
{
民:70,,
等级:“C”
},
{
最低:60,,
成绩:“D”
},
{
分:0,,
等级:“F”
}
];
用于(等级中的变量i。长度){
如果(分数>=grades[i].min)返回分数[i].grade;
}
返回;
}
功能等级(分数){
var等级=getGrade(分数);
document.getElementById('message').innerHTML=“你的成绩是:”+grade;
}
函数getScore(){
var分数=提示(“请输入您的分数百分比”,0);
如果(isNaN(分数)| |分数<0){
警告(“平均值必须是一个百分比值。请重新输入您的分数百分比”);
getScore();
}否则{
成绩(分);
}
}
getScore();
希望这有帮助

--将


函数平均等级(myAvg)
{   
如果(myAvg>=90)
{
返回警报(“您的平均值为A”);
}
否则,如果(myAvg>=80)
{
返回警报(“您的平均值为B”);
}
否则,如果(myAvg>=70)
{
返回警报(“您的平均值为C”);
}
否则,如果(myAvg>=60)
{
返回警报(“您的平均值为D”);
}
如果(myAvg>=0),则为else
{
返回警报(“您的平均值为E”);
}
}
var myAvg=提示(“请输入您的平均值”,0);
平均等级(myAvg)

是的,您可以在函数中使用switch语句。这是使用switch语句的错误方式。如果使用if/else,则switch块可以进入函数中。不过,您可以稍微简化您的情况。例如,case(myAvg>=90&&myAvg<100)可以写成case(myAvg>=90),因为您已经在检查它不能大于100。Python没有一个
开关
或任何远程类似的东西(最接近的是一个
dict
,它的值是针对每种情况调用的函数,更像C,具有直接的相等性检查,而不是条件求值)。
    function getGrade(score, grades) {
        grades = grades || [
            {
                min: 90,
                grade: 'A'
            },
            {
                min: 80,
                grade: 'B'
            },
            {
                min: 70,
                grade: 'C'
            },
            {
                min: 60,
                grade: 'D'
            },
            {
                min: 0,
                grade: 'F'
            }
       ];
        for (var i in grades.length) {
            if (score >= grades[i].min) return grades[i].grade;
        }
        return;
    }

    function showGrade(score) {
        var grade = getGrade(score);
        document.getElementById('message').innerHTML = "Your grade is: " + grade;
    }

    function getScore() {
        var score = prompt("Please enter your grade percentage", 0);
        if (isNaN(score) || score < 0) {
            alert("Average must be a percentage value. Please re-enter your grade percentage.");
            getScore();
        } else {
            showGrade(score);
        }
    }
    getScore();
<script type= "javascript/text">

function averageGrade(myAvg) 
{   
    if (myAvg >= 90)
    {
        return alert("Your average is an A");   
    }
    else if (myAvg >=80)
    {
        return alert("Your average is an B");
    }
    else if (myAvg >=70)
    {
        return alert("Your average is an C");
    }
    else if (myAvg >=60)
    {
        return alert("Your average is an D");
    }
    else if (myAvg >=0)
    {
        return alert("Your average is an E");
    }
}

var myAvg = prompt("Please enter your average",0);

averageGrade(myAvg)

</script>