2017-05-08 66 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個元素迭代,所以你所要求的一個元素太多。