【发布时间】:2013-01-17 17:16:48
【问题描述】:
当一个变量缺少一个字段并且用户看到这个或那个变量没有这个或那个属性的警告时,我遇到了这个问题。在简单的情况下,它非常简单。
if(field)
doSomething(field.subField);
但是,在经验情况下,我发现自己陷入了这种荒谬的过度检查。
if(!data
|| !data.records
|| !data.records[0]
|| !data.records[0].field
|| !data.records[0].field.id)
return null;
doSomething(data);
我的意思是,来吧 - 如果我是水管工,而不是开发人员,管道式的东西看起来像。所以,我有一种非常强烈的感觉,我的支票虽然足够,但可能有点太过分了。 JS 中是否有关于何时执行检查的约定?
【问题讨论】:
-
如果你需要经常这样做,你的代码可能比你想象的要多。
-
有一个库可能会有所帮助:github.com/jclem/steeltoe
-
改用
try/catch怎么样? -
+1 @Blazemonger。我认为 Python 有理由支持它,但我不记得它叫什么了。
-
从您的代码看来,您正在验证 JSON 或类似结构。如果您确实需要这样做,我建议将您的验证代码重构为一个单独的函数。