-2

使用下面的对象和方法,为什么会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 的 FizzBu​​zz。我正在使用他们的在线 JavaScript 编辑器玩这个对象。该方法的打印结果始终为 0。它应该返回可被 3 或 5 整除的 0 到 20 之间的数字数量,但不能同时被 3 和 5 整除。

4

2 回答 2

2

此时在您的代码中,您的循环中有您的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/

于 2013-04-24T01:09:17.960 回答
0

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

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

演示:小提琴

于 2013-04-24T01:09:22.870 回答