2017-05-08 35 views
-3

属性时运行下面的代码,我得到了错误的不确定JavaScript不能读取的不确定

“不能读取属性‘字’上标有星号。

var arr = [{ 
 
    key1: 'value1' 
 
    }, 
 
    { 
 
    key1: 'value2' 
 
    } 
 
]; 
 
for (var k = 0; k <= arr.length; k++) { 
 
    console.log(arr[k].key1); 
 
}

+3

'K <= arr.length'将导致'ARR [2]'这显然' undefined'。改用'k haim770

回答

0

你的数组索引范围是0,arr.length - 1

var arr = [{ 
 
    key1: 'value1' 
 
    }, 
 
    { 
 
    key1: 'value2' 
 
    } 
 
]; 
 
for (var k = 0; k <= arr.length - 1; k++) { 
 
    console.log(arr[k].key1); 
 
}

3

对于条件<=,的k值将变得2未定义的最后一次迭代。

条件应该是k < arr.length所以k该值将是 “0 ... 1”

var arr = [{ 
 
    key1: 'value1' 
 
    }, 
 
    { 
 
    key1: 'value2' 
 
    } 
 
]; 
 
for (var k = 0; k < arr.length; k++) { 
 
    console.log(arr[k].key1); 
 
}

0

你迭代在一个空对象结束,改变循环条件从<到< =。

var arr = [{ 
    key1: 'value1' 
    }, 
    { 
    key1: 'value2' 
    } 
]; 
for (var k = 0; k < arr.length; k++) { 
    console.log(arr[k].key1); 
} 

当你从0到迭代array.length,那么你在array.length + 1个元素迭代,所以你所要求的一个元素太多。