Hoe kan ik variabelen vergelijken met undefined, als ik niet weet of ze bestaan?

In JavaScript kun je een variabele declareren en als het undefinedis, kun je variable == undefinedaanvinken; Dat weet ik, maar hoe kun je een waarde vergelijken die je nog niet weet als deze in het geheugen staat?

Ik heb bijvoorbeeld een klasse die wordt gemaakt wanneer de gebruiker op een knop klikt. Daarvoor is de klasse ongedefinieerd — het bestaat nergens; hoe kan ik het vergelijken?

Is er een manier zonder trycatchte gebruiken?


Antwoord 1, autoriteit 100%

De beste manier is om het typete controleren, omdat undefined/null/falselastig is in JS.
Dus:

if(typeof obj !== "undefined") {
    // obj is a valid variable, do something here.
}

Merk op dat typeofaltijd een tekenreeks retourneert en geen fout genereert als de variabele helemaal niet bestaat.


Antwoord 2, autoriteit 33%

if (obj === undefined)
{
    // Create obj
}

Als u uitgebreid javascript programmeert, moet u er een gewoonte van maken om ===en !==te gebruiken wanneer u een typespecifieke controle wilt uitvoeren.

Ook als je een behoorlijke hoeveelheid javascript gaat gebruiken, raad ik aan om de code door JSLint http://www te laten lopen. jslint.comhet lijkt in het begin misschien een beetje draconisch, maar de meeste dingen waar JSLint je voor waarschuwt, zullen je uiteindelijk bijten.


Antwoord 3

if (document.getElementById('theElement')) // do whatever after this

Voor ongedefinieerde dingen die fouten veroorzaken, test u de eigenschapsnaam van het bovenliggende object in plaats van alleen de variabelenaam – dus in plaats van:

if (blah) ...

doen:

if (window.blah) ...

Antwoord 4

!undefinedis waar in javascript, dus als u wilt weten of uw variabele of object ongedefinieerd is en acties wilt ondernemen, kunt u zoiets als dit doen:

if(<object or variable>) {
     //take actions if object is not undefined
} else {
     //take actions if object is undefined
}

Antwoord 5

if (!obj) {
    // object (not class!) doesn't exist yet
}
else ...

Other episodes