簡體   English   中英

JavaScript中的加法

[英]addition in javascript

我有這段代碼求和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

如果未指定參數,則req.param('2', null)返回null

然后調用parseInt(null) ,得到NaN

如果將任何數字與NaN相加,將得到NaN


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

如果計算中的任何值為NaN就會看到NaN 在您的示例中,大概ij和/或kNaN 您需要查看它是哪個。 請注意, parseInt可以返回NaN (例如, parseInt(null)NaN )。


旁注:使用parseInt ,最好總是包括基數,例如parseInt(i, 10)而不是僅parseInt(i) 這樣, parseInt不會猜測基數(數字基數)。

當JavaScript使用parseInt將字符串轉換為int時,它將讀取每個字符,直到看到非數字字符為止。 空字符串( '' )是非數字的,因此將其轉換為NaN

例子:

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

因此,您需要確保輸入不為空。 確保它實際上是一個數字。

PS我建議將第二個參數添加到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

如果三個變量之一是NaN,則它不是加,而是串聯。 對每個變量執行console.log或警報,以查找各個值以查看哪個不是數字。

編輯...糟糕,我剛剛看到您已經在將它們強制為整數。 很好 因此錯誤實際上是在那一步發生的...您的一個或多個值不是數字,因此不能強制為整數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM