TypeError: Nie można odczytać właściwości undefined (odczyt "0")
TypeError: Nie można odczytać właściwości undefined (odczyt "0") oznacza, że próbujesz uzyskać dostęp do właściwości lub indeksu zmiennej, która jest undefined. Najczęściej występuje w JavaScript, gdy próbujesz odczytać element tablicy lub właściwość obiektu, który nie został poprawnie zainicjalizowany.let arr;
console.log(arr[0]); // Błąd: arr jest undefined
a) Niezainicjalizowana zmienna:
let obj;
console.log(obj[0]); // Błąd
b) Indeks poza zakresem tablicy:
let arr = [1, 2];
console.log(arr[5]); // undefined, ale dalsze operacje na tym mogą spowodować błąd
c) Asynchroniczność:
let data;
fetch('https://api.example.com/data')
.then(response => response.json())
.then(json => data = json);
console.log(data[0]); // Błąd, ponieważ dane jeszcze nie zostały pobrane
d) Nieprawidłowa struktura danych:
undefined lub null.a) Sprawdzanie istnienia zmiennej:
if (arr !== undefined && arr !== null) {
console.log(arr[0]);
}
b) Optional chaining (?.):
console.log(arr?.[0]); // Zwróci undefined, jeśli arr jest undefined
c) Inicjalizacja zmiennych:
let arr = [];
console.log(arr[0]); // undefined, ale brak błędu
d) Obsługa błędów w danych asynchronicznych:
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => {
if (data && data.length > 0) {
console.log(data[0]);
} else {
console.log("Brak danych");
}
});
console.log() lub debugera, aby sprawdzić, czy zmienne są poprawnie zainicjalizowane.console.log("Zmienna arr:", arr);
?.) i nullish coalescing (??) to nowoczesne mechanizmy w JavaScript (od ES2020), które pomagają unikać błędów związanych z undefined i null.return (
<div>
{data ? data[0] : "Ładowanie..."}
</div>
);
Dlaczego undefined powoduje błąd?
undefined lub null powoduje TypeError, ponieważ te wartości nie mają żadnych właściwości.Przykład z tablicą:
let arr = [1, 2, 3];
console.log(arr[0]); // 1
console.log(arr[3]); // undefined
console.log(arr[3].toString()); // Błąd: Cannot read property 'toString' of undefined
undefined.TypeError: Nie można odczytać właściwości undefined (odczyt "0") wynika z próby dostępu do niezainicjalizowanej zmiennej lub elementu tablicy poza zakresem.?. i ??, aby unikać tego typu błędów.