Javascript 如何在不破坏程序的情况下检查不存在的变量的值?

Javascript 如何在不破坏程序的情况下检查不存在的变量的值?,javascript,node.js,Javascript,Node.js,我有一个来自HTTP get的JSON输出。 然后我使用来自nodejs的JSON.parse 输出基本上是这样的: items: [ snippet: { foo: "bar", bar: "foo } snippet: { foo: "bar", bar: "foo } snippet: { foo: "bar", bar: "foo } ] 我的

我有一个来自HTTP get的JSON输出。 然后我使用来自nodejs的JSON.parse

输出基本上是这样的:

items: [
    snippet: {
        foo: "bar",
        bar: "foo
    }
    snippet: {
        foo: "bar",
        bar: "foo
    }
    snippet: {
        foo: "bar",
        bar: "foo
    }
]
我的代码如下所示:

foo1 = items[0].snippet.foo
bar1 = items[0].snippet.bar
这个变量声明可以正常工作,直到我找到了有时可能不存在的变量

foo4 = items[4].snippet.foo

当然,这在这里并不存在。我想我可以简单地做一个if(foo4=='Null'),然后设置foo4='notexisting',这样以后我的程序就不会崩溃。但是,程序在声明此变量本身时崩溃。。。如何防止这种情况发生?

在ES2020中,有一个很酷的功能叫做and,因此您可以尝试将它们结合起来:

foo4 = items[4]?.snippet?.foo ?? 'not existing'

因此,如果
items[4]
为空或未定义,则
items[4]?.snippet?.foo
将设置为未定义为foo4,然后运算符
将向变量foo 4添加默认值,因为键不唯一,所以对象无效。是否改为
项:[……]
?然后可以在为数组编制索引之前检查数组的长度。在
L=items.length()的行中,然后
items[i].snippet.foo
其中
i
介于
0
L
之间(例如在循环中)。太棒了!我在谷歌上快速搜索了一下,发现Node.js 14.0.0^可以使用可选的链接,但是,您知道nullish合并是否兼容吗?@RishabJain根据Node.js 14.0.0是受支持的