Javascript'未捕获的TypeError:无法读取属性'blah'of undefined'

时间:2013-08-13 15:02:24

标签: javascript

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

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

给了我

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

3 个答案:

答案 0 :(得分:2)

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

if (selected[i] && selected[i].facet !== undefined) { // ...

答案 1 :(得分:1)

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

答案 2 :(得分: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 )循环播放它。旨在解决错误的根源,而不是解决症状。