Javascript - javascript ellenőrzi, hogy van egy változó (meghatározott

typeof operátor ellenőrzi, hogy a változó nem igazán definiált.

typeof operátor. Eltérően más szolgáltatók nem ReferenceError kivételt állít elő, amikor használni egy be nem jelentett változó.

Fontos megjegyezni ugyanakkor, hogy a typeof null visszatér „tárgy”. Óvatosnak kell lennünk, hogy ne egy hiba inicializálása változó null. Ahhoz, hogy biztonságos, ez olyasmi, tudtuk használni helyette:

@StevenPenny most. Úgy kezdődött, nagyon eltérő, akkor OP általa szerkesztett, amíg ő volt szinte változatlan. - ZAD-Man május 19 '17 at 10:12

Ez elég hülye, de. - TrojanByAccident május 19 '17 at 10:12

@SamuelLiew tudnak, de az előbbi valójában igaz (és jogos) és lényegtelen, hogy az a kérdés, anti - === ==. - Alnitak május 19 '17 at 10:12

If (! Variable_here) ; Nem tudja megállapítani, hogy a változó hamis vagy bizonytalan. - hess május 19 '17 at 10:12

StackOverflow - ez a helyes válasz helyett ikonok. Ezen kívül, senki sem szabad nevezni változó definiált. Nem tudom elhinni, hogy ez működik. - Cory Danielson május 19 '17 at 10:12

if (! variable_here) megszakad sok esetben. Ha a változó értéke 0 vagy hamis, nem fog sikerülni. Ez nem az, amit akarsz. - Cory Danielson május 19 '17 at 10:12

Nem lehet eldönteni, hogy szavazzanak rá. Szigorúan véve, typeof ize === „meghatározatlan” jobb, és jobb, mint a felső szavazott választ, de kiegészítő megjegyzések csak, hogy ez a válasz zavaró. - Alnitak május 19 '17 at 10:12

@Saiid definiálatlan lehet újra. Például: meghatározatlan = false; meghatározatlan = true;. A válasz - az egyetlen biztos módja annak, hogy megbizonyosodjon arról, hogy a változó nem igazán definiált. - Samuel Liew május 19 '17 at 10:12

@SamuelLiew SZVSZ jobb lenne, hogy egyszerűen távolítsa el mindkét hangot. Milyen értéke van összehasonlítva egy változó tartalmú „meghatározatlan”. Használata === helyett == - nagyon jó gyakorlat, de az indokolja, hogy miért nincs értelme. - Alnitak május 19 '17 at 10:12

változó === definiálatlan működik - TrojanByAccident május 19 '17 at 10:12

A legtöbb esetben, akkor érdemes használni:

Ellentétben az egyszerű if (elem). ez lehetővé teszi 0. hamis. NaN és ''. de elutasítja a null vagy határozatlan. amely lehetővé teszi a jó általános jelenlétére irányuló vizsgálatok valamely elmélet, vagy egy tulajdonság az objektum.

Más ellenőrzést is rossz, csak különböző módokon:

if (elem). Ezt fel lehet használni, ha a tárgy elem garantált, vagy ha hamis. 0 és T. D. vett alapértelmezett (tehát egyenértékű meghatározatlan vagy null).

typeof elem == „definiálatlan” lehet használni olyan esetekben, ahol az említett nulla egy bizonyos értéket, vagy egy nem inicializált változó tulajdonságokkal.

  • Ez az egyetlen ellenőrzésen, amely nem okoz hibát, ha az elem nem állapították meg (azaz var. És nem az ingatlan ablakot. Vagy nem érv a funkció). Ez, véleményem szerint, elég veszélyes, mert lehetővé teszi, hogy csúszik észrevétlen elírás. Ennek elkerülése érdekében, lásd. A módszer az alábbiakban.

Azt is érdemes összevetni szigorúan definiált.

Azonban, mivel a globális meghatározatlan felülírható más értéket, akkor jobb, hogy egy változót definiálatlan az aktuális régióban használata előtt:

A második módszer előnye abban rejlik, hogy a JS mini-szűrők csökkentik a nem definiált változónak egyetlen karakter, a mentés közben egy pár byte minden egyes alkalommal.

Válaszol David Tang május 19 '17 at 10:12

Emiatt felülbírálja a problémát, akkor mindig void (0) helyett meghatározatlan. - Barth Zalewski május 19 '17 at 10:12

Ez egy kivételt dob, és előírja, hogy használjon egy ablakot. mielőtt a változót, ha azt a globális környezetben. ez nem a legjobb módszer. - Alex W május 19 '17 at 10:12

El kell fogadni a választ. Összehasonlítás meghatározatlan és használata typeof a legtöbb esetben vagy nem szükséges, vagy rosszul csinált. Programozás - megbízhatóság, könnyen olvasható, könnyen karbantartható. Nem a fantázia. - jose.angel.jimenez május 19 '17 at 10:12

Hogyan lehet ellenőrizni, ha a változó létezik

Elég golyóálló megoldás ellenőrzésre, ha a változó létezik, és már inicializált:

Ez a leggyakrabban használt együtt a hármas beállítható az alapértelmezett értékek Ha egy változót nem inicializált:

Problémák a beágyazás

Sajnos, nem lehet csak úgy magukba a bejelentkezés funkciót.

Akkor gondolni, hogyan kell csinálni valamit, mint ez:

Azonban, ha a hívott fél, például ez vezet a hiba linkeket. isset (ize), valamint a foo változó nincs definiálva, mert nem tudja átadni a nem létező változó funkció:

Felkészületlen ReferenceError: ize nincs meghatározva

Vizsgálata bizonytalan függvényparaméterek

Bár isset funkció nem használható, hogy ellenőrizze a jelenlétét vagy hiányát egy változót (a fent részletezett okokból), ez lehetővé teszi számunkra, hogy ellenőrizze, ha a függvény paramétereinek meghatározása:

Annak ellenére, hogy az y értéke nem kerül továbbításra a vizsgálati funkciót. a funkció isset jól működik ebben az összefüggésben, mivel y ismert, hogy működjön a teszt érték definiálatlan.

Hogy alternatív válaszok használata typeof hasOwnProperty (). ami persze, ellenőrizze, hogy egy objektum (szinte minden a JS), azaz a változó tulajdonságok (többek között).

A hasOwnProperty () metódus visszaad egy logikai érték, amely azt jelzi, hogy az objektum egy meghatározott tulajdonság, mint a saját (és nem öröklött) tulajdon.

Minden objektum származik az objektum örökli hasOwnProperty () módszer. Ez a módszer is alkalmazható annak meghatározására, hogy az objektum a megadott tulajdonság, mint a közvetlen tulajdonsága az objektum; Ezzel szemben az üzemeltető. Ez a módszer nem ellenőrzi az objektum prototípus láncban.

Ami figyelemre méltó az hasOwnProperty (). Ez a tény, hogy amikor hívod, nem használunk olyan változó, amely még nem határozták meg, ami természetesen fele a problémát.

Bár a döntés nem mindig tökéletes vagy ideális. Bizonyos körülmények között ez csak egy munka!

Nagy javulás, egyszerű Gyors megérteni, köszönöm! - CPHPython május 19 '17 at 10:13

@CPHPython Szerkesztette; Jó? - Fred Gandt május 19 '17 at 10:13

Az öröm veled dolgozni ;-) - Fred Gandt május 19 '17 at 10:13

Ez egy fantasztikus alternatív és legyen a tetején upvoted ezt a kérdést. Kérjük egyszerűsítése header működő példa válasz, ami igazat ad vissza (például window.hasOwnProperty (konzol), vagy var hop = "p"; window.hasOwnProperty (hop)). - CPHPython május 19 '17 at 10:13

Nincs szükség, hogy meghatározzák a funkció magyarázatot, az emberek azonnal felismeri, de a rövid válasz az, hogy olvasni gyorsabb. Ha továbbra is szeretné elhagyni a töredék, csak hagyja a két sort, az első és a második határozza meg a var - nyomtatási eredményeket. - CPHPython május 19 '17 at 10:13

Nehéz megkülönböztetni a nullától a végtelenségig. Null - egy értéket, amely hozzá lehet rendelni egy változót, ha meg szeretné adni, hogy egy változó nincs konkrét jelentése. Definiálatlan - különös jelentősége, melyik lesz az alapértelmezett érték nem hozzárendelt változók.

Válaszol Jith május 19 '17 at 10:12

Hasznos lenne, hogy bemutassák a beépített terminál minden figyelmeztetés. - demisx május 19 '17 at 10:12

@demisx elfogadott, hanem hez szerkesztés, miért nem csináljuk? Az opció létezik valamilyen okból. Egyesek úgy vélik, hogy durva, Azt hiszem, hogy nagyon hatékony - így ő szerkesztette a válasz (jóváhagyás függőben). - Fred Gandt május 19 '17 at 10:12