Hogyan ellenőrizhető, hogy nincs meghatározva a JavaScriptben?

Ha egy változót érték nélkül rendelünk be, akkor a kezdeti értéke undefined.

Hogyan ellenőrizheti, hogy az érték undefined a JavaScriptben?

A rövid válasz

A modern böngészőkben biztonságosan összehasonlíthatja a változót közvetlenül a következőhöz: undefined:

Vannak, akik a undefined, mert a régi böngészők így engedélyezték az érték újbóli hozzárendelését:

Az új hozzárendelés után összehasonlítva a undefined közvetlenül már nem észleli helyesen, hogy egy változóhoz van-e rendelve érték.

Ezt a viselkedést azonban 2009-ben kijavították az ECMAScript 5 használatával:

A modern böngészőkben ” már nem lehet újból hozzárendelni a globális undefined értéket.

Mi van, ha támogatnom kell az IE8 és régebbi verziókat?

Általában közvetlenül összehasonlítva az un meghatározott még mindig biztonságos. Nincs gyakorlati oka annak, hogy egy alkalmazás újból hozzárendelje a undefined értékét.

Thomas Eding ezt meggyőző hasonlattal bizonyítja:

Ha továbbra is aggódik, kétféleképpen ellenőrizheti, hogy egy érték nincs-e meghatározva, még akkor is, ha a globális undefined felül lett írva.

Használhatja a void operátor a undefined értékének megszerzéséhez. Ez akkor is működik, ha a globális window.undefined értéket túlírják:

A nulla ebben a példában nincs különösebb jelentéssel, ugyanúgy használhatja a 1 vagy a function(){}. A void(anything) mindig a következőt értékeli: undefined.

Alternatív megoldásként a typeof operátorral biztonságosan ellenőrizheti, hogy van-e érték kijelölték. A globális undefined érték összehasonlítása helyett ellenőrizze, hogy az s típus értéke “undefined”:

Ne feledje, hogy ez kissé eltér az előző lehetőségektől. Még akkor is, ha a name nem “t deklarált” typeof, akkor is meghatározatlan. Ha egy be nem jelentett változót összehasonlítana a undefined vagy a void(0) változóval, akkor inkább egy ReferenceError-t kapna.

De ne ” közvetlenül használja a void (0)

Kerülje a void(0) vagy typeof x === "undefined" szóhasználatot a kódban. Ezek a kifejezések önmagukban nem magyarázhatók, és egy ilyen isUndefined funkcióba kell csomagolniuk:

Sok segédkönyvtárban már be van építve ez a funkció, például van egy _.isUndefined funkció az Underscore.js fájlban.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük