我有这个代码来计算3个数字的和,所以i+j+k,但我得到的结果是
代码如下:
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。
发布于 2012-05-25 22:20:05
如果未指定参数,则req.param('2', null)返回null。
然后调用parseInt(null),它给出了NaN
如果你用NaN加上任何数字,你会得到NaN。
请改用req.param('2', 0)
发布于 2012-05-25 22:18:30
如果计算中的任何值为NaN,您将看到NaN。在您的示例中,假设i、j和/或k为NaN。您需要查看它是哪一个。请注意,parseInt可以返回NaN (例如,parseInt(null)为NaN)。
附注:在使用parseInt时,最好包括基数,例如parseInt(i, 10),而不仅仅是parseInt(i)。这样,parseInt就不会猜测基数(基数)。
发布于 2012-05-25 22:27:56
当JavaScript使用parseInt将字符串转换为整型时,它会读取每个字符,直到看到非数字字符为止。空字符串('')不是数字,因此会转换为NaN。
示例:
parseInt('ABC', 10); // NaN
parseInt('123ABC', 10); // 123因此,您需要确保输入不是空的;确保它实际上是一个数字。
附注:我建议向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 10https://stackoverflow.com/questions/10756031
复制相似问题