该值在javascript中变为NaN

时间:2013-08-29 09:24:19

标签: javascript backbone.js numbers

我尝试迭代集合,如下所示

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初始化了上面的变量,为什么当我将它设置为zero时它变为NaN?

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

我使用backbone.js

2 个答案:

答案 0 :(得分:2)

您正在使用

覆盖零值
debitAmountTcyTotal = parseFloat(debitAmountTcyTotal) + parseFloat(data.get("amountTcy"));

据推测,parseFloat(data.get("amountTcy"))NaN

0 + NaNNaN

答案 1 :(得分:2)

99%data.get("amountTcy")还原NaN或值,无法转换为数字。正常值(零)+ NaN始终是NaN。

此外,您不需要对已经是数字的值调用parseFloat(例如debitAmountTcyTotal)。