0

我正在尝试测试数组元素是否未定义:

  if(typeof selected[i].facet != 'undefined')
  {
       //do stuff
  }

给我

Javascript 'Uncaught TypeError: Cannot read property 'facet' of undefined '
4

3 回答 3

2

您必须同时测试数组索引和属性:

if (selected[i] && selected[i].facet !== undefined) { // ...
于 2013-08-13T15:04:40.520 回答
1
if((selected[i]) && (selected[i].facet != undefined))
  {
       //do stuff
  }
于 2013-08-13T15:05:37.507 回答
1

你应该正确地做你的循环

for (var i = 0, len = selected.length; i < len; ++i) {
    //selected[i] will always be a valid index in the array
}

如果它是selected[i]数组中的有效索引,但undefined无论如何,那么你在语义上不需要一个数组,而是一个以整数作为键的字典。在这种情况下,您可以使用for( var key in map ). 旨在修复错误的根源,而不是与症状作斗争。

于 2013-08-13T15:07:31.153 回答