为什么方法返回0

Why does method return 0?

本文关键字:返回 方法 为什么      更新时间:2023-09-26

使用下面的对象和方法,为什么console.log(FizzBuzzPlus.getFizzBuzzCount(20))打印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; 
}

小提琴:
http://jsfiddle.net/hVf9n/

在for循环中有返回语句,在isFizzBuzzieChecker中也有语法错误,在if条件中缺少关闭的)

getFizzBuzzCount: function(c) {
    var count = 0;
    for (var i = 0; i < c; i++) {
        if (this.isFizzBuzzie(i)) {
            count++;
        }
    }
    return count;
}

演示:小提琴