JSON对象上的多属性检查三元运算符在Google Chrome控制台中无法在Node.js中运行

问题描述

我有一个像下面的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'

enter image description here

如果我在nodejs @ 12中尝试它,则会给我语法错误

enter image description here

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

解决方法

我认为您有一个简单的错字。 您正在用这种方式检查

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

我想你是说

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

或更短

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

var result = obj && obj.key2 && obj.key2.key2a || "0";

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...