从可能未定义的字段中分配变量

时间:2013-05-06 16:19:20

标签: javascript

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

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

我要做的是将数据[0] [0] [0]的内容分配给结果,但有时这些数据可能不可用,如果我只是说:

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

我可能会收到错误,因为数据[0] [0]未初始化。 我的解决方案有效,但我确信有更好的方法可以做到...也许使用例外? 感谢

1 个答案:

答案 0 :(得分:1)

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

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

这比原始代码更容易理解,也更准确。如果data[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]