Típushiba: "x" (nem) "y"

Az „x (nem) y” JavaScript-kivétel akkor keletkezik, ha egy váratlan típus fordul elő. Ez leginkább váratlan undefined vagy null értéket jelent.

Ü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

TypeError.

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() vagy a Symbol.keyFor() – 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.
}

Lásd még