2013-04-24 138 views
-2

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

+0

谢谢。语法错误是原始代码中没有的错字。移动返回语句。现在工作正常。 – 2013-04-24 01:22:30

+0

你应该修正你的问题,然后打字错误;) – Jace 2013-04-24 01:26:08

+1

好点...完成。 – 2013-04-24 01:28:32

回答

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 
    } 
} 

此举returnfor循环:

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

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

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; 
} 

演示:Fiddle