gpt4 book ai didi

未知任意深度的 Javascript 对象导致脚本停止执行

转载 作者:行者123 更新时间:2023-11-29 19:58:41 25 4
gpt4 key购买 nike

我可能会收到这样的 JSON 结构

foo: {}

或者我可能喜欢这样:

foo: {bar: {baz: 1} }

当我像这样检查第一个数据结构是否存在时:

if ( data.foo.bar.baz ) { }

脚本完全停止运行。我在浏览器或任何东西上都看不到任何 javascript 错误。它只是停止。无论哪种方式,如果能够执行上述操作而不是:

if ( data.foo && data.foo.bar && data.foo.bar.baz ) { }

解决此问题的最佳方法是什么?

最佳答案

假设您不能影响您正在使用的 JSON,那么您检查的方式几乎是唯一的方式。尽管我更喜欢检查 !== undefined。这纯粹是我的编程特质,因为我不喜欢考虑 if (object) 检查 object 的有效性。我总是将那行等同于 if(object === true),从 bool 逻辑的 Angular 来看,这并不是一回事。

if ( data.foo !== undefined && data.foo.bar !== undefined && data.foo.bar.baz !== undefined) { }

您可以不用检查 data.foo !== undefined,因为您说过 foo 可以是一个空对象。

如果您的代码有很多这样的检查,您可以在收到 JSON 数据时预先检查并填写任何缺失的对象:

if ( data.foo === undefined) data.foo = {};
if ( data.foo.bar === undefined) data.foo.bar = {};
if ( data.foo.bar.baz === undefined) data.foo.bar.baz = null; // or skip this, I suppose...

关于未知任意深度的 Javascript 对象导致脚本停止执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15401006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com