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