json对象上的多属性检查三元运算符在nodejs中不起作用,而它在google chrome控制台中工作

Posted

技术标签:

【中文标题】json对象上的多属性检查三元运算符在nodejs中不起作用,而它在google chrome控制台中工作【英文标题】:Multi property check ternary operator on json object not working in nodejs while its working in google chrome console 【发布时间】:2020-11-05 18:44:31 【问题描述】:

我有一个像下面这样的 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 中尝试它,它会给我语法错误。

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

【问题讨论】:

if(obj.key2) if(obj.key2a) obj.key2.key2a 它是一个对象。与 JSON 无关。 并且您需要节点 14 才能使用 ?. 运算符。 developer.mozilla.org/en-US/docs/Web/javascript/Reference/… 【参考方案1】:

我认为你有一个简单的错字。 你是这样检查的

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";

【讨论】:

谢谢@user2953241

以上是关于json对象上的多属性检查三元运算符在nodejs中不起作用,而它在google chrome控制台中工作的主要内容,如果未能解决你的问题,请参考以下文章

NodeJS检查对象属性是否为空。

爪哇“?”用于检查 null 的运算符 - 它是啥? (不是三元!)

为啥 Go 没有三元条件运算符 [关闭]

如何在剃刀中使用三元运算符(特别是在 HTML 属性上)?

AngularJS:三元运算符条件检查中的函数调用

三元运算符,如果为真则返回检查条件的快捷方式?