3

以下のcalculateTotal関数を作成する手順を含むcodecademy.comのレッスンに取り組んでいます。[実行]をクリックすると、NaNが返されます。私が書いたように、calculateTotal関数の何が問題になっているのか、NaNを返すようになっていることは誰でも知っています。注意、NaNは数字ではないことを理解しています...

// runner times
var carlos = [9.6,10.6,11.2,10.3,11.5];
var liu = [10.6,11.2,9.4,12.3,10.1];
var timothy = [12.2,11.8,12.5,10.9,11.1];

// declare your function calculateTotal here
var calculateTotal = function(raceTimes){
    var totalTime; 
    for(i = 0; i < raceTimes.length; i++){
        totalTime += raceTimes[i]; 
        return totalTime; 
    }
};

var liuTotal = calculateTotal(liu);

console.log(liuTotal);

この質問に答える人の多くは、vartotalTimeを「O」に設定する必要があると言っていることに注意してください。ただし、次のcodecademyレッスンでは、作成者はtotalTimeが何にも設定されていない関数を記述し、それが機能します。

var calculateAverage = function (raceTimes) {
  var totalTime;
  for ( i = 0; i < raceTimes.length; i++ ) {
    totalTime = (totalTime || 0) + raceTimes[i];
  }
// assign variable averageTime
var averageTime = totalTime / raceTimes.length; 

  return averageTime;
};
4

3 に答える 3

8

2 つの問題:

  1. totalTimeは定義されていません -- 未定義の結果に何かを追加すると、NaN
  2. ループの内側に戻っています。

修理:

var totalTime=0;
for(i = 0; i < raceTimes.length; i++){
    totalTime += raceTimes[i]; 
}
return totalTime; 
于 2012-08-27T21:39:30.193 に答える
2

値で初期化されていませんtotalTime。したがって、デフォルトではundefined。したがって、各反復で、未定義が追加され、が生成されNaNます。

于 2012-08-27T21:40:04.390 に答える
2

あなたtotalTimeには初期値がないため、 として始まりますundefined。数値を追加して数値を取得することはできませんundefined:

var totalTime; // implicitly initialized to undefined 
for(i = 0; i < raceTimes.length; i++){
    totalTime += raceTimes[i];  // undefined + raceTimes[i] = NaN
    return totalTime; 
}

に初期化し0ます。

var totalTime = 0;
于 2012-08-27T21:39:38.927 に答える