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控制台中工作的主要内容,如果未能解决你的问题,请参考以下文章