如何正确检查我是否可以执行toString

时间:2016-08-19 09:23:18

标签: javascript

通常此代码的工作方式与预期相同,但有时会抛出错误。它也不是一种正确的方法。我也想知道如何正确地做到这一点。

R2

如您所见,待转换输入可以位于2个位置中的1个位置。它也可以是commit,这是被接受的,因此我transaction

我得到的错误:

if (qIdAnswer && qIdAnswer.hasOwnProperty('Numeric')) {
    answer = parseFloat(qIdAnswer.Numeric.toString().replace(',', '.'));
} else {
    answer = parseFloat(qIdAnswer.OpenText.replace(',', '.'));
}

由于此代码用于后端,因此我无法访问DOM。

我也在处理多种类型的输入,因此小数可以是点0或逗号hasOwnProperty()。这就是我将其转换为通用输出的原因。始终设置null is not an object (evaluating 'qIdAnswer.Numeric.toString'); 属性,在此代码之前检查该属性。

1 个答案:

答案 0 :(得分:1)

告诉您qIdAnswer.Numeric存在并且值为null。您undefined会遇到同样的问题。你可以通过进行进一步!= null检查(这将对两者都进行辩护)来防御这两种情况:

if (qIdAnswer && qIdAnswer.hasOwnProperty('Numeric') && qIdAnswer.Numeric != null) {
    answer = parseFloat(qIdAnswer.Numeric.toString().replace(',', '.'));
} else {
    answer = parseFloat(qIdAnswer.OpenText.replace(',', '.'));
}

或者如果您担心!= null支票和undefined值的可维护性(例如,不知道它将处理undefined的程序员),请明确:< / p>

if (qIdAnswer && qIdAnswer.hasOwnProperty('Numeric') && qIdAnswer.Numeric !== null && qIdAnswer.Numeric !== undefined) {
    answer = parseFloat(qIdAnswer.Numeric.toString().replace(',', '.'));
} else {
    answer = parseFloat(qIdAnswer.OpenText.replace(',', '.'));
}