我可能会收到这样的JSON结构
foo: {}或者我可能会喜欢这样:
foo: {bar: {baz: 1} }当我像这样检查第一个数据结构是否存在时:
if ( data.foo.bar.baz ) { }脚本将完全停止运行。我在浏览器上看不到任何javascript错误。它就会停下来。不管怎样,最好能做到以上几点,而不是:
if ( data.foo && data.foo.bar && data.foo.bar.baz ) { }解决这个问题的最好方法是什么?
发布于 2013-03-14 12:29:26
如果您试图捕获深度嵌套对象上所有可能的错误,那么您可以使用多个if条件:
if (data && data.foo && data.foo.bar && data.foo.bar.baz ) { }或者,如果失败不是预期的情况,您可以使用异常处理程序:
try {
var item = data.foo.bar.baz;
// operate on item
} catch(e) {
// perform any actions when it failed
}有时,使用单个异常处理程序保护代码块可以极大地简化错误处理。当异常触发时,异常的性能比if测试差,所以您应该记住这一点,但意外的失败通常是异常最擅长的处理方式,有时它们可以真正简化您的其余代码。
似乎有一些开发人员基本上从来不想编写异常代码,而是更喜欢使用大量的if测试,但他们存在于语言中,因为他们非常擅长帮助解决某些类型的问题。
https://stackoverflow.com/questions/15401006
复制相似问题