Frage So prüfen Sie eine nicht definierte Variable in JavaScript


Ich wollte überprüfen, ob die Variable definiert ist oder nicht. Das folgende Beispiel löst einen nicht definierten Fehler aus

alert( x );

Wie kann ich diesen Fehler finden?


769
2018-05-13 14:09


Ursprung


Antworten:


In JavaScript, null ist ein Objekt. Es gibt einen anderen Wert für Dinge, die nicht existieren, undefined. Das DOM kehrt zurück null für fast alle Fälle, in denen es keine Struktur im Dokument findet, sondern in JavaScript selbst undefined ist der verwendete Wert.

Zweitens, nein, es gibt kein direktes Äquivalent. Wenn Sie wirklich nach etwas suchen möchten null, machen:

if (yourvar === null) // Does not execute if yourvar is `undefined`

Wenn Sie prüfen möchten, ob eine Variable existiert, kann dies nur mit durchgeführt werden try/catch, schon seit typeof behandelt eine nicht deklarierte Variable und eine mit dem Wert von deklarierte Variable undefined als gleichwertig.

Aber um zu überprüfen, ob eine Variable deklariert ist und ist nicht undefined:

if (typeof yourvar !== 'undefined') // Any scope

Wenn Sie wissen, dass die Variable existiert und prüfen möchten, ob darin ein Wert gespeichert ist:

if (yourvar !== undefined)

Wenn Sie wissen wollen, ob ein Mitglied unabhängig ist, aber egal, wie sein Wert ist:

if ('membername' in object) // With inheritance
if (object.hasOwnProperty('membername')) // Without inheritance

Wenn Sie wissen wollen, ob eine Variable ist truthy:

if (yourvar)

Quelle


1488
2018-05-13 14:11



Die einzige Möglichkeit, wirklich zu testen, ob eine Variable ist undefined ist Folgendes zu tun. Denken Sie daran, undefined ist ein Objekt in JavaScript.

if (typeof someVar === 'undefined') {
  // Your variable is undefined
}

Einige der anderen Lösungen in diesem Thread führen zu der Annahme, dass eine Variable nicht definiert ist, obwohl sie definiert wurde (z. B. mit einem Wert von NULL oder 0).


301
2018-05-13 14:53



Technisch gesehen ist die richtige Lösung (glaube ich):

typeof x === "undefined"

Sie können manchmal faul und benutzen

x == null

aber das erlaubt sowohl eine undefinierte Variable x, als auch eine Variable x, die null enthält, um wahr zurückzugeben.


59
2018-05-13 14:12



Eine noch einfachere und kürzere Version wäre:

if (!x) {
   //Undefined
}

ODER

if (typeof x !== "undefined") {
    //Do something since x is defined.
}

16
2018-05-13 14:26



Ich habe oft getan:

function doSomething(variable)
{
    var undef;

    if(variable === undef)
    {
         alert('Hey moron, define this bad boy.');
    }
}

14
2018-05-13 14:45



Sie können auch den ternären Bedingungsoperator verwenden:

var a = "hallo world";
var a = !a ? document.write("i dont know 'a'") : document.write("a = " + a);

//var a = "hallo world";
var a = !a ? document.write("i dont know 'a'") : document.write("a = " + a);


3
2018-02-12 12:02



Ich benutze oft den einfachsten Weg:

var variable;
if (variable === undefined){
    console.log('Variable is undefined');
} else {
    console.log('Variable is defined');
}

BEARBEITEN:

Ohne Initialisierung der Variablen wird die Exception geworfen "Uncaught ReferenceError: Variable ist nicht definiert ..."


1
2017-12-09 08:44