我想要实现的是具有多个可能的null返回的干净代码,其中我不会在多个地方返回,代码很容易遵循并且不是嵌套的噩梦。例如,考虑
var topLevel = testdata['key'];//testdata['key'] may be null
var nextLevel = topLevel['subkey']; //topLevel['subkey'] may be null
var subSubLevel = ...
我最初的想法是做类似
的事情var topLevel = testdata['key'] || 'error';
这至少会阻止"无法获得空的x"然后我会在结尾处有一个块,我需要检查这些变量是否都是错误,如果是,则返回null并提供相应的错误消息(可能带有关联对象)。
有没有人有更智能,更简洁的方法来达到相同的最终结果?
答案 0 :(得分:5)
我可能会使用JavaScript的奇怪强大的&&
运算符(您已使用的curiously-powerful ||
operator的表兄弟)来执行此操作:
var topLevel = testdata['key'];
var nextLevel = topLevel && topLevel['subkey'];
// ...
如果topLevel
为假(null
,undefined
等),nextLevel
将获得该假名值(左侧操作数);如果不是,则评估右侧操作数,nextLevel
接收该值。使用这些防护,你可以随心所欲地继续前进。
var topLevel = testdata['key'];
var nextLevel = topLevel && topLevel['subkey'];
var nextNextLevel = nextLevel && nextLevel['key3'];
var nextNextNextLevel = nextNextLevel && nextNextLevel['key4'];
当您期望对象引用null
或undefined
时,这非常方便。