如何避免JavaScript中出现空指针错误?

时间:2019-07-17 16:04:10

标签: javascript

我有以下代码:

const result = A.field_1.subfield_2

null为null(或A)时如何评估结果为A.field_1并避免出现null错误?我想知道是否有比这更优雅的方法

if (A != null && A.field_1 != null) { ...

例如,如果有10个字段,该怎么办。

4 个答案:

答案 0 :(得分:1)

if(A && A.field_1 && A.field_1.subfield_2) {
  // Your code here
  // Remember: null and undefined always return false
}

答案 1 :(得分:0)

创建自定义方法以检查Object。使用对象constructor,我们可以检查天气变量是否为对象。

function isObject(obj) {
    return (!!obj) && obj.constructor === Object
}
const result = isObject(A) && isObject(A.field_1) ? A.field_1.subfield_2 : null

答案 2 :(得分:0)

将其包装在try / catch中,也可以使用10次或以上:)

"10" > "2"

答案 3 :(得分:0)

您可以通过遍历所有Object.values()并使用every()测试它们是否有效来使其成为递归函数。

以下函数处理对象和数组:

function test(obj) {
  if (typeof obj == 'undefined' || obj == null) return false
  if (typeof obj == 'object') {
    return Object.values(obj).every(i => test(i))
  }
  return true
}

console.log(test({field_1: 0, field_2: 'abc'}))
console.log(test({field_1: 1, field_2: null}))
console.log(test({field_1: 1, field_2: null, cat: 123}))
console.log(test({field_1: 1, field_2: /abc/g, monkey: { dog: 'cat' }}))
console.log(test({field_1: 1, field_2: /abc/g, monkey: { dog: 'cat', mouse: { pig: null } }}))
console.log(test({field_1: 1, field_2: /abc/g, monkey: { dog: 'cat', mouse: { pig: [{cat: 'af'}]}}}))
console.log(test({field_1: 1, field_2: /abc/g, monkey: { dog: 'cat', mouse: { pig: [{cat: 'af'}, {cat: null}]}}}))