-2

我有一个像下面这样的 json 对象

let obj = { 'key1' : 'value1' , 'key2 : { 'key2a' : 'value2a' } }

我想做一个三元运算符检查,相当于下面的代码

if(obj) {
  if(obj.key2) { 
    if(obj.key2.key2a) {
        return obj.key2a;
    }
  }
}

因此,在 google chrome 控制台中,我尝试在下面以更简单的方式实现它并且它有效......

obj?.key2?.key2a? obj.key2.key2a : '0'

在此处输入图像描述

如果我在 nodejs@12 中尝试它,它会给我语法错误。
在此处输入图像描述

有人可以帮我理解这种差异吗?

4

1 回答 1

-1

I think you have a simple typo. You are checking this way

if(obj) {
  if(obj.key2) {  // <- obj.key2 here
    if(obj.key2a) { // <- but checking another property on the same level too
        return obj.key2a;
    }
  }
}

I think you mean

if(obj) {
  if(obj.key2) {  // <- obj.key2 here
    if(obj.key2.key2a) { // <- now safely access child property here
        return obj.key2.key2a;
    }
  }
}

or shorter

if (obj && obj.key2 && obj.key2.key2a) {
  // ...
}

or

var result = obj && obj.key2 && obj.key2.key2a || "0";
于 2020-11-05T18:46:25.297 回答