在javascript中添加

时间:2012-05-25 14:16:44

标签: javascript sum add

我有这个代码来总结3个数字所以i + j + k但我得到的结果是Nan

这是代码:

var i = req.param('1', null);
      i = parseInt(i);
      var j = req.param('2', null);
          j = parseInt(j);

      var k = req.param('3', null);
         k = parseInt(k);

      var r = i+j+k;
      res.render('index', {result:r});

这是基于节点的js

4 个答案:

答案 0 :(得分:3)

如果未指定参数,

req.param('2', null)将返回null

然后,您拨打parseInt(null),即NaN

如果您使用NaN添加任意号码,则会获得NaN


使用req.param('2', 0)代替

答案 1 :(得分:1)

如果计算中的任何值为NaN,您会看到NaN。在您的示例中,大概ij和/或kNaN。你需要看看它是什么。请注意,parseInt可以返回NaN(例如,parseInt(null)NaN)。


附注:使用parseInt时,最好包含基数,例如: parseInt(i, 10)而不仅仅是parseInt(i)。这样,parseInt就不会猜到基数(数字基数)。

答案 2 :(得分:1)

当JavaScript使用parseInt将字符串转换为int时,它会读取每个字符,直到它看到非数字字符。空白字符串('')不是数字字符,因此会转换为NaN

示例:

parseInt('ABC', 10); // NaN
parseInt('123ABC', 10); // 123

因此,您需要确保输入不是空白;确保它实际上是一个数字。

P.S。我建议将第二个参数添加到parseInt,它告诉它使用什么基础。如果它被排除,它会尝试猜测。有时这会导致问题:

parseInt('12'); // 12 (base 10)
parseInt('012'); // 10 (the leading '0' makes it base 8 [octal])

parseInt('012', 10); // 12. forced to be base 10

答案 3 :(得分:0)

如果三个变量中的一个是NaN,那么它不会添加,而是连接。为每个变量执行console.log或alert,以查找各个值以查看哪个不是数字。

编辑...哎呀,我刚看到你已经强迫他们整数了。这很好。所以错误实际上发生在那一步......你的一个(或多个)值不是数字,因此不能强制为整数。