通常此代码的工作方式与预期相同,但有时会抛出错误。它也不是一种正确的方法。我也想知道如何正确地做到这一点。
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');
属性,在此代码之前检查该属性。
答案 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(',', '.'));
}