javascript - not - js check undefined




Wie kann festgestellt werden, ob die Variable 'undefiniert' oder 'null' ist? (16)

Bester Weg:

if(typeof variable==='undefined' || variable===null) {

/* do your stuff */
}

Wie kann ich feststellen, ob die Variable nicht undefined oder null ? Mein Code ist wie folgt:

var EmpName = $("div#esd-names div#name").attr('class');
if(EmpName == 'undefined'){
  //DO SOMETHING
};
<div id="esd-names">
  <div id="name"></div>
</div>

Aber wenn ich das mache, stoppt der JavaScript-Interpreter die Ausführung.


Da Sie jQuery verwenden , können Sie mit einer einzigen Funktion bestimmen, ob eine Variable nicht definiert ist oder ob ihr Wert null ist.

var s; // undefined
jQuery.isEmptyObject(s); // will return true;

s = null; // defined as null
jQuery.isEmptyObject(s); // will return true;

// usage
if(jQuery.isEmptyObject(s)){
    alert('Either variable: s is undefined or its value is null');
}else{
     alert('variable: s has value ' + s);
}

s = 'something'; // defined with some value
jQuery.isEmptyObject(s); // will return false;

Die Standardmethode, um gleichzeitig null und undefined abzufangen, ist dies:

if (variable == null) {
     // do something 
}

- was zu 100% dem expliziteren, aber weniger prägnanten entspricht:

if (variable === undefined || variable === null) {
     // do something 
}

Beim Schreiben professioneller JS wird === dass [Gleichheit des Typs und das Verhalten von == vs === ] [1] verstanden wird. Deshalb verwenden wir == und vergleichen nur mit null .

Bearbeiten Sie erneut

Die Kommentare, die den Gebrauch von typeof vorschlagen, sind einfach falsch. Ja, meine obige Lösung wird einen ReferenceError verursachen, wenn die Variable nicht existiert. Das ist eine gute Sache. Dieser ReferenceError ist wünschenswert: Er wird Ihnen helfen, Ihre Fehler zu finden und zu beheben, bevor Sie Ihren Code versenden, genau wie Compilerfehler in anderen Sprachen.

Sie sollten in Ihrem Code keine Verweise auf nicht deklarierte Variablen haben.


Dies ist eine sehr alte Frage, aber ich denke immer noch, dass der beste / sicherste Weg, diese 2 Bedingungen zu testen, darin besteht, den Wert in eine Zeichenkette umzuwandeln:

var EmpName = $("div#esd-names div#name").attr('class');

// Undefined check
if (Object.prototype.toString.call(EmpName) === '[object Undefined]'){
    // do something with your code
}

// Nullcheck
if (Object.prototype.toString.call(EmpName) === '[object Null]'){
    // do something with your code
}

Ich bin gekommen, um meine eigene Funktion dafür zu schreiben ... Javascript ist komisch

Verwendbar auf buchstäblich alles. (Beachten Sie, dass dies auch überprüft, ob die Variable irgendwelche verwendbaren Werte enthält. Aber da diese Information normalerweise auch benötigt wird, denke ich, dass es sich lohnt, sie zu posten). Bitte denken Sie darüber nach, eine Notiz zu hinterlassen.

function empty(v) {
        let type = typeof v;
        if(type === 'undefined') {
            return true;
        }
        if(type=== 'boolean') {
            return !v;
        }
        if(v === null) {
            return true;
        }
        if(v === undefined) {
            return true;
        }
        if(v instanceof Array) {
            if(v.length < 1) {
                return true;
            }
        }
        else if(type === 'string') {
            if(v.length < 1) {
                return true;
            }
            if(v==='0') {
                return true;
            }
        }
        else if(type === 'object') {
            if(Object.keys(v).length < 1) {
                return true;
            }
        }
        else if(type === 'number') {
            if(v===0) {
                return true;
            }
        }
        return false;
    }

Typoskript-kompatibel.

bearbeiten. Diese Funktion sollte genau dasselbe tun wie PHPs empty() Funktion (siehe RETURN VALUES )

Betrachtet undefined , null , false , 0 , 0.0 , "0" {} , [] als leer.

"0.0" , NaN , " " , werden als nicht-leer angesehen.


Ich führe diesen Test auf der Chrome-Konsole, mit (void 0) können Sie undefined überprüfen

var c;
undefined
if(c === void 0)alert();
// output =  undefined
var c = 1;
// output =  undefined
if(c === void 0)alert();
// output =   undefined
// check c value  c
// output =  1
if(c === void 0)alert();
// output =  undefined
c = undefined;
// output =  undefined
if(c === void 0)alert();
// output =   undefined

Kombiniert man die obigen Antworten, scheint es die vollständigste Antwort zu sein:

if( typeof variable === 'undefined' || variable === null ){
    // Do stuff
}

Dies sollte für jede Variable funktionieren, die entweder nicht deklariert oder deklariert ist und explizit auf null oder nicht definiert gesetzt ist. Der boolesche Ausdruck sollte für jede deklarierte Variable, die einen tatsächlichen Wert ungleich Null hat, als false ausgewertet werden.


Mein 5-Cent-Beitrag für einen bestimmten Fall:

var bUndef = ($('#' + selectedNodeID).position() === undefined)
if (bUndef)
....

Das Anwesen ist untadelig nicht das Element!


Sie können überprüfen, ob der Wert nicht definiert oder null ist, indem Sie einfach typeof verwenden:

if(typeof value == 'undefined'){

Sie können dazu die Eigenschaften des abstrakten Gleichheitsoperators verwenden:

if (variable == null){
    // your code here.
}

Weil null == undefined wahr ist, wird der obige Code sowohl null als auch undefined fangen.


Wenn die Variable, die Sie überprüfen möchten, eine globale Variable ist, tun Sie dies

if (window.yourVarName) {
    // Your code here
}

Auf diese Weise wird kein Fehler yourVarName auch wenn die Variable yourVarName nicht existiert.

Beispiel: Ich möchte wissen, ob mein Browser die History-API unterstützt

if (window.history) {
    history.back();
}

Wie das funktioniert:

window ist ein Objekt, das alle globalen Variablen als seine Eigenschaften enthält, und in JavaScript ist es legal zu versuchen, auf eine nicht existierende Objekteigenschaft zuzugreifen. Wenn der history nicht existiert, gibt window.history zurück. undefined ist falsch, also wird Code in einem if(undefined){} -Block nicht ausgeführt.


jQuery überprüft Element nicht null

var dvElement = $('#dvElement');

if (dvElement.length  > 0) {
    //do something
}
else{
    //else do something else
}

if(x==null) eine schlechte Idee in Javascript ist, kann die Beurteilung mit "==" zu unerwarteten Typenzwängen führen und kann nicht von coffee-script gelesen werden. Verwenden Sie niemals "==" oder "! =" in Bedingungsbeurteilungen !

if(x) besser sein wird.aber vorsichtig 0 und "" , wird es als falsch behandelt, nicht gleich Methode mit "!= null" ist wahr .

https://www.w3schools.com/js/js_best_practices.asp


if (typeof EmpName != 'undefined' && EmpName) {

wird als wahr ausgewertet, wenn der Wert nicht ist:

  • Null

  • nicht definiert

  • NaN

  • leerer String ("")

  • 0

  • falsch


var i;

if(i === null || typeof i === 'undefined'){
console.log(i,'i is undefined or null')
}else{
console.log(i,'i has some value')
}

var x;
if (x === undefined) {
    alert ("only declared, but not defined.")
};
if (typeof y === "undefined") {
    alert ("not even declared.")
};

Sie können nur die zweite verwenden: Sie prüft sowohl die Definition als auch die Deklaration







undefined