我正在通过Codecademy工作。我需要创建一个获取电影名称的功能,并根据输入的电影进行电影评论。我需要使用switch
语句来执行此操作。
它要求用户创建一个名为getReview
的函数,并且必须使用switch
来提供可能的输出。我不确定函数和switch
之间的语法/关系。这是我写的:
var getReview = function (movie) {
switch (movie) {
case "Toy Story 2":
"Great story. Mean prospector."
break;
case "Finding Nemo":
"Cool animation, and funny turtles"
break;
case "The Lion King":
"Great songs."
break;
default:
"I don't know!"
break;
}
};
我从Codecademy收到一条错误,询问“你确定你正在回复正确的事吗?”
答案 0 :(得分:1)
您应该为每个case
添加一个return语句。
通常,您希望在交换机中为每个break
添加case
语句。但是,既然您已经return
,那么您的切换就不可能掉线。"如果你不确定这意味着什么,请看这个例子:
switch (x) {
case 1:
console.log("hi #1")
case 2:
console.log("hi #2")
break;
case 3:
console.log("hi #3")
break;
}
如果x == 1
,那么
hi #1
hi #2
将出现在控制台中。将其与x == 2
或x == 3
进行比较。然后,只有"hi #2"
或"hi #3"
分别出现在控制台中。
这是因为,在完成case 1
后,计算机会继续运行:您需要break
才能停止它。但是,通过return
,您基本上会调用break
,因为函数会返回,因此不会继续通过case
。
无论哪种方式,这都是我设置它的方式:
var getReview = function (movie) {
switch (movie) {
case "Toy Story 2": return "Great story. Mean prospector."
// all your other cases
default: return "movie not in library"
}
}
或者(语法不是很干净),你可以在最后返回一个变量:
var getReview = function (movie) {
var line = ""
switch (movie) {
case "Toy Story 2":
line = "Great story. Mean prospector."
break;
// all your other cases
default:
line = "movie not in library"
break; // this `break` is optional
}
return line
}
答案 1 :(得分:0)
将一个字符串放在一个语句中并没有对它做任何事情。该函数应该返回消息,因此您必须使用return
语句。
var getReview = function(movie) {
switch (movie) {
case "Toy Story 2":
return "Great story. Mean prospector."
break;
case "Finding Nemo":
return "Cool animation, and funny turtles"
break;
case "The Lion King":
return "Great songs."
break;
default:
return "I don't know!"
break;
}
};
alert(getReview(prompt("What movie?")));