为什么方法返回0?
问题描述:
使用下面的对象和方法,console.log(FizzBuzzPlus.getFizzBuzzCount(20))
为什么打印0?为什么方法返回0?
var FizzBuzzPlus = {
isFizzBuzzie: function(a) {
if(a%5 === 0 || a%3 === 0) {
if (a%5 === 0 && a%3 === 0) {
return false;
}
return true;
} else {
return false;
}
},
isFizzBuzzieChecker: function(c) {
var theFizzBuzzes = [];
for (var i = 0; i < c; i++) {
if (this.isFizzBuzzie(i)) {
theFizzBuzzes += i + " ";
}
}
return theFizzBuzzes;
},
getFizzBuzzSum: function(b) {
var sum = 0;
for (var i = 0; i < b; i++) {
if (this.isFizzBuzzie(i)) {
sum += i;
}
}
return sum;
},
getFizzBuzzCount: function(c) {
var count = 0;
for (var i = 0; i < c; i++) {
if (this.isFizzBuzzie(i)) {
count++;
}
return count;
}
}
};
console.log(FizzBuzzPlus.isFizzBuzzieChecker(20));
console.log(FizzBuzzPlus.getFizzBuzzSum(20));
console.log(FizzBuzzPlus.getFizzBuzzCount(20));
有些人可能会认识到这是来自Codecademy的FizzBuzz。我正在使用他们的在线JavaScript编辑器玩这个对象。该方法的打印结果始终为0.它应返回0和20之间的数字,可被3或5整除,但不能同时为3和5.
答
此时在您的代码中,您有return
声明您for
循环内:
getFizzBuzzCount: function(c) {
var count = 0;
for (var i = 0; i < c; i++) {
if (this.isFizzBuzzie(i)) {
count++;
}
return count; //<-- this return is INSIDE the for loop
}
}
此举return
外for
循环:
getFizzBuzzCount: function(c) {
var count = 0;
for (var i = 0; i < c; i++) {
if (this.isFizzBuzzie(i)) {
count++;
}
}
return count;
}
答
你有内部的for循环return语句,也有在isFizzBuzzieChecker
语法错误,在这里闭幕)
在if
条件缺少
getFizzBuzzCount: function(c) {
var count = 0;
for (var i = 0; i < c; i++) {
if (this.isFizzBuzzie(i)) {
count++;
}
}
return count;
}
演示:Fiddle
谢谢。语法错误是原始代码中没有的错字。移动返回语句。现在工作正常。 – 2013-04-24 01:22:30
你应该修正你的问题,然后打字错误;) – Jace 2013-04-24 01:26:08
好点...完成。 – 2013-04-24 01:28:32