0

这是我的问题:处理这种情况的最佳(最清晰)方法是什么?

<!-- language: lang-js -->
var result = (data[0][0] && data[0][0][0]) ? data[0][0][0] : null;   

我正在尝试做的是将 data[0][0][0] 的内容分配给结果,但有时该数据可能不可用,如果我只是说:

<!-- language: lang-js -->
var result = data[0][0][0];

我可能会收到一个错误,因为 data[0][0] 未初始化。我的解决方案有效,但我确信有更好的方法来做到这一点......也许使用异常?谢谢

4

1 回答 1

1

我坚信编写清晰的代码;考虑以下重写:

var result = null;
if (data[0][0] && typeof data[0][0][0] != 'undefined') {
  result = data[0][0][0]; 
}

这很容易理解,并且可以说比您的原始代码更正确。Ifdata[0][0][0]始终是一个对象,或者null您当然可以改为这样写:

var result = null;
if (data[0][0] && data[0][0][0]) {
  result = data[0][0][0]; 
}

没有真正的捷径;您必须先检查data[0][0]才能检查data[0][0][0]

于 2013-05-06T16:24:55.893 回答