这是我的代码
function test(number) {
if (number % 15 == 0) {
return "FizzBuzz";
}
if (number % 3 == 0) {
return "Fizz";
}
if (number % 5 == 0) {
return "Buzz";
}
return number.toString();
}
我输入test(15)
。
结果打印"FizzBuzz"
为什么不打印"FizzBuzz"
"Fizz"
和"Buzz"
?
答案 0 :(得分:2)
每个功能只能return
一次。返回后,如果您调用该函数,它将返回到该行。
答案 1 :(得分:1)
当您return
时,函数终止并返回传递的值。返回后的任何代码都不会被执行。
在你的情况下,函数输入第一个语句(因为number % 15 == 0
语句返回true),看到一个返回,返回FizzBuzz
,并突破函数。
答案 2 :(得分:0)
因为您将函数保留为return而不是
function test(number) {
var res = "";
if(number % 15 == 0){
res += "FizzBuzz";
}
if(number % 3 == 0){
res += "Fizz";
}
if(number % 5 ==0){
res += "Buzz";
}
return res;
}
它将添加条件的结果。
答案 3 :(得分:0)
@Yehuda正确解释为什么它只显示FizzBuzz:返回时会停止执行某个功能。
这是获得所有模数的(许多)解决方案之一:它定义了一个数组,您可以在其中存储模数。在代码的末尾,它返回数组。
function test(number) {
var res = [];
if(number % 15 == 0) {
res.push("FizzBuzz");
}
if(number % 3 == 0) {
res.push("Fizz");
}
if(number % 5 == 0) {
res.push("Buzz");
}
console.log(res);
return res;
}
test(15);
答案 4 :(得分:0)
如果你想返回varius:
function test(number) {
res = '';
if(number % 15 == 0){
res += " FizzBuzz";
}
if(number % 3 == 0){
res += " Fizz";
}
if(number % 5 ==0){
res += " Buzz";
}
return number + " - " + res.toString();
}