我的问题是这个简单的程序始终显示“NaN”错误。

我针对此简单功能的代码将始终为简单的加法指令提示“NaN”错误,但我不确定如何解决此问题。

该程序应该简单地添加里程和奖励,如果futureTrips是大于0的任何值,则奖励为1000。

我的代码是:

    var miles;
    var futureTrips;
    var totalMiles;
    var bonus;
    miles = prompt("Please enter your current miles");
    futureTrips = prompt("pleae enter amount of future trips");

    if (futureTrips > 0){
        (bonus = 1000);}
    else{
        (bonus = 0);}

   totalMiles = (bonus.value + miles.value);
   alert(totalMiles);

这将始终显示“NaN”错误。有关如何解决此问题的任何提示?

最佳答案

问题:
bonusmiles是数字(实际上miles是一个字符串)。您必须使用它们而不是不存在的.value属性(因此是undefined),因此:

totalMiles = (bonus.value + miles.value);

是相同的:
totalMiles = (undefined + undefined);

这是NaN

修复:

直接使用bonusmiles(尽管您仍然需要将miles转换为数字):
totalMiles = bonus + Number(miles);

工作摘要:

var miles;
var futureTrips;
var totalMiles;
var bonus;

miles = prompt("Please enter your current miles");
futureTrips = prompt("pleae enter amount of future trips");

futureTrips = Number(futureTrips);

if (futureTrips > 0) {
  bonus = 1000;
} else {
  bonus = 0;
}

totalMiles = bonus + Number(miles);
alert(totalMiles);



注意:
  • prompt返回字符串,因此您必须先将miles转换为数字,否则将获得字符串连接而不是算术加法。您不必转换bonus,因为它已经是一个数字。您还应该考虑将futureTrips转换为if之前的数字。
  • 表达式之间不需要括号:(bonus = 1000);等效于bonus = 1000;
  • 10-08 16:31