2013-04-24 136 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