我正在编写一个codecademy.com课程,其中包含编写下面的calculateTotal函数的说明。当我点击运行时,它返回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);
请注意,许多回答此问题的人都说var totalTime必须设置为“O”。但是,在下一个codecademy lessson中,作者写了一个函数,其中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;
};
答案 0 :(得分:7)
两个问题:
totalTime
未定义 - 在NaN
修正:
var totalTime=0;
for(i = 0; i < raceTimes.length; i++){
totalTime += raceTimes[i];
}
return totalTime;
答案 1 :(得分: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;
答案 2 :(得分:2)
您尚未使用值初始化totalTime
。所以默认为undefined
。因此,在每次迭代时,都会添加undefined,产生NaN
。