最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

如何在不使程序崩溃的情况下检查不存在的变量的值?

IT培训 admin 13浏览 0评论

如何在不使程序崩溃的情况下检查不存在的变量的值?

我有一个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 ='不存在',因此以后不会使我的程序崩溃。但是,当声明此变量本身时,程序崩溃...如何防止这种情况发生?

回答如下:

ES2020中有一个很酷的功能,称为可选链接和无效合并,因此您可以尝试将它们组合:

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

因此,如果items[4]为空或未定义的部分,items[4]?.snippet?.foo将把undefined设置为foo4,然后运算符??将向变量foo 4添加默认值

如何在不使程序崩溃的情况下检查不存在的变量的值?

我有一个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 ='不存在',因此以后不会使我的程序崩溃。但是,当声明此变量本身时,程序崩溃...如何防止这种情况发生?

回答如下:

ES2020中有一个很酷的功能,称为可选链接和无效合并,因此您可以尝试将它们组合:

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

因此,如果items[4]为空或未定义的部分,items[4]?.snippet?.foo将把undefined设置为foo4,然后运算符??将向变量foo 4添加默认值

发布评论

评论列表 (0)

  1. 暂无评论