当使用零时,Replace()会产生“Uncaught TypeError:undefined不是函数”

时间:2015-04-01 04:41:44

标签: javascript android mongodb

我从MongoDb获取数字,我通过使用replace()方法删除任何空格或逗号来解析它们的格式。虽然这在一段时间内完美地工作,但我发现它在值为零时产生以下错误

Uncaught TypeError: undefined is not a function

包含质疑方法的代码段如下:

function Query_Member_points_credits_summaryExecute() 
{
    var Balance = Apperyio.storage.MS_Member_Points_Credits_Summary.get("$['Balance']");
    var balance = parseFloat(Balance.replace(',', '').replace(' ', ''));
    console.log("balance " + balance);
    var threshold = parseFloat(50000);
    console.log("threshold " + threshold);
}

第二行引起的错误。

调查尝试:

  1. 我用以下内容替换了该行:
    一个。 var balance = parseFloat(Balance.replace(',', ''));
    var balance = parseFloat(Balance.replace(' ', ''));
    C。 var balance = Balance.replace(',', '').replace(' ', '');

  2. 只有这一点适用于balance = 0
    var balance = parseFloat(Balance);

  3. 使用零以外的数字,包括0.000001,工作正常

  4. 我感到困惑可能是什么原因

1 个答案:

答案 0 :(得分:1)

我首先建议,之后:

var Balance = Apperyio.storage.MS_Member_Points_Credits_Summary.get("$['Balance']");

输入一些调试代码,告诉你Balance实际是什么,类似于:

alert(typeof(Balance));

从您的错误消息中,它可能是undefined。如果是这种情况,那么您需要追踪appery.io为什么为零提供未定义值的原因。

如果未定义,则可能是某些奇怪的类型(即不是字符串)可能会影响replace次呼叫的管道。

如果appery.io为您提供了number类型为零而string类型为非零(根据您的评论),则快速“&”修复可能是这样的:

// Ensure number made string before replace.
var balance = parseFloat((""+Balance).replace(',', '').replace(' ', ''));

然后我会联系他们询问这是否是他们的错误。