2013-08-29 23 views
2

我嘗試遍歷像下面值變成NaN在JavaScript

var debitAmountTcyTotal = 0; 
var debitAmountPcyTotal = 0; 
      _.each(JournalVoucherView.journalVoucherDebitCollection.models, function(data) { 
       if (data) { 
        debitAmountTcyTotal = parseFloat(debitAmountTcyTotal) + parseFloat(data.get("amountTcy")); 
        debitAmountPcyTotal = parseFloat(debitAmountPcyTotal) + parseFloat(data.get("amountPcy")); 
       } 
      }); 

      $('#journalvoucher-debit-amountTcy-total').text(parseFloat(debitAmountTcyTotal)); 
      $('#journalvoucher-debit-amountPcy-total').text(parseFloat(debitAmountPcyTotal)); 

但集合有沒有價值,當下面的收集變得NaN

debitAmountTcyTotal 
debitAmountPcyTotal 

但我已經初始化以上變量與zero爲什麼它變成NaN當我將它設置爲zero

我真的不明白背後的原因。

我用backbone.js

+0

parseFloat('zero')將始終返回NaN。爲什麼不是0?請參閱https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseFloat – davidkonrad

回答

2

您與

debitAmountTcyTotal = parseFloat(debitAmountTcyTotal) + parseFloat(data.get("amountTcy")); 

想必parseFloat(data.get("amountTcy"))覆蓋你的零值NaN

0 + NaNNaN

+0

當收集爲空時,呼叫甚至不會到達上述位置,在這種情況下,此線路可能如何被開除? –

+0

也許收集不是空的,但包含你不期望的數據。你提供的測試用例會拋出引用錯誤,所以顯然不完整。嘗試插入一個斷點並逐行跟蹤代碼,以觀察變量發生了什麼。 – Quentin

2

99%data.get("amountTcy") resturns NaN或價值,這可能不會被轉換爲數字。而正常值(零)+ NaN總是一個NaN。

此外,您不需要對已經是數字的值(例如debitAmountTcyTotal)調用parseFloat。