Típushiba: "x" (nem) "y"
Üzenet
TypeError: Unable to get property {x} of undefined or null reference (Edge) TypeError: "x" is (not) "y" (Firefox) Példák: TypeError: "x" is undefined TypeError: "x" is null TypeError: "undefined" is not an object TypeError: "x" is not an object or null TypeError: "x" is not a symbol
Hiba típusa
Mi történt?
Váratlan típus fordult elő a végrehajtás során. Ez leginkább undefined
vagy null
értékek esetén történik.
Ugyanígy bizonyos metódusok – mint például az Object.create()
(en-US) vagy a Symbol.keyFor()
(en-US) – paraméterként egy meghatározott típust várnak.
Példák
Hibás használatok
// nem definiált és null értékű paraméterek használata, amiknek esetén a substring metódus nem működik
var foo = undefined;
foo.substring(1); // TypeError: foo nincs definiálva
var foo = null;
foo.substring(1); // TypeError: foo értéke null
// Bizonyos metódusok meghatározott típust várnak el
var foo = {}
Symbol.keyFor(foo); // TypeError: foo nem szimbólum
var foo = 'bar'
Object.create(foo); // TypeError: "foo" nem objektum vagy null értékű
A hiba javítása
Az undefined
értékek kiszűrésére például a typeof operátort lehet használni.
if (foo !== undefined) {
// Most, hogy tudjuk foo definiálva van, léphetünk tovább.
}
if (typeof foo !== 'undefined') {
// Ugyanaz a jó ötlet, de nem használandó implementáció – problémákat tud okozni
// a ténylegesen definiálatlan és a deklarálatlan változók közötti kavarodás miatt.
}