web-dev-qa-db-de.com

gibt es so etwas wie isset von PHP in Javascript/jQuery?

Gibt es etwas in Javascript/jQuery, um zu prüfen, ob eine Variable gesetzt/verfügbar ist oder nicht? In PHP verwenden wir isset($variable), um so etwas zu überprüfen.

vielen Dank.

70
gautamlakum

Versuchen Sie diesen Ausdruck:

typeof(variable) != "undefined" && variable !== null

Dies ist wahr, wenn die Variable definiert ist und nicht null, was der Ausgabe von PHP entspricht.

Sie können es so verwenden:

if(typeof(variable) != "undefined" && variable !== null) {
    bla();
}
130
Emil Vikström

JavaScript isset () auf PHP JS

function isset () {
    // discuss at: http://phpjs.org/functions/isset
    // +   original by: Kevin van     Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: FremyCompany
    // +   improved by: Onno Marsman
    // +   improved by: Rafał Kukawski
    // *     example 1: isset( undefined, true);
    // *     returns 1: false
    // *     example 2: isset( 'Kevin van Zonneveld' );
    // *     returns 2: true
    var a = arguments,
        l = a.length,
        i = 0,
        undef;

    if (l === 0) {
        throw new Error('Empty isset');
    }

    while (i !== l) {
        if (a[i] === undef || a[i] === null) {
            return false;
        }
        i++;
    }
    return true;
}
9
Oleg

typeof wird den Zweck erfüllen, denke ich

if(typeof foo != "undefined"){}
3
DanneManne

Wenn Sie prüfen möchten, ob eine Eigenschaft vorhanden ist: hasOwnProperty ist der richtige Weg

Da es sich bei den meisten Objekten um Eigenschaften eines anderen Objekts handelt (das schließlich zum window-Objekt führt), kann dies gut zum Prüfen der Werte dienen.

3
zzzzBov

Nicht natürlich, nein ... Ein Googeln der Sache ergab jedoch Folgendes: http://phpjs.org/functions/isset:454

2

http://phpjs.org/functions/isset:454

phpjs-Projekt ist eine vertrauenswürdige Quelle. Viele js äquivalente PHP-Funktionen stehen dort zur Verfügung. Ich benutze seit langer Zeit und habe bisher keine Probleme gefunden.

2
Sandeepan Nath

Das Problem ist, dass die Übergabe einer undefinierten Variablen an eine Funktion einen Fehler verursacht.

Das bedeutet, dass Sie typeof ausführen müssen, bevor Sie es als Argument übergeben.

Der sauberste Weg, den ich gefunden habe, ist so:

function isset(v){
    if(v === 'undefined'){
        return false;
    }
    return true;
}

Verwendungszweck:

if(isset(typeof(varname))){
  alert('is set');
} else {
  alert('not set');
}

Der Code ist jetzt viel kompakter und lesbarer.

Dies gibt immer noch einen Fehler aus, wenn Sie versuchen, eine Variable aus einer nicht instanziierten Variablen aufzurufen.

isset(typeof(undefVar.subkey))

bevor Sie versuchen, dies auszuführen, müssen Sie sicherstellen, dass das Objekt definiert ist:

undefVar = isset(typeof(undefVar))?undefVar:{};
1
Dieter Gribnitz

zusätzlich zu der Antwort von @ emil-vikström würde die Überprüfung auf variable!=null für variable!==null sowie für variable!==undefined (oder typeof(variable)!="undefined") zutreffen.

0
user2619604

Einige Teile dieser Antworten funktionieren. Ich habe sie alle zu einer Funktion "isset" zusammengefasst, so wie die Frage gestellt wurde, und sie funktioniert wie in PHP.

// isset helper function 
var isset = function(variable){
    return typeof(variable) !== "undefined" && variable !== null && variable !== '';
}

Hier ist ein Anwendungsbeispiel, wie man es benutzt:

var example = 'this is an example';
if(isset(example)){
    console.log('the example variable has a value set');
}

Es hängt von der Situation ab, für die Sie es benötigen, aber lassen Sie mich aufzeigen, was jeder Teil tut:

  1. typeof(variable) !== "undefined" prüft, ob die Variable überhaupt definiert ist
  2. variable !== null prüft, ob die Variable NULL ist (einige Leute setzen explizit NULL und glauben nicht, dass der Wert auf NULL gesetzt ist, dass das korrekt ist, in diesem Fall entfernen Sie diesen Teil)
  3. variable !== '' prüft, ob die Variable auf eine leere Zeichenfolge gesetzt ist. Sie können diese entfernen, wenn eine leere Zeichenfolge als für Ihren Anwendungsfall festgelegt gilt

Hoffe das hilft jemandem :)

0
stuyam

Hier :)

function isSet(iVal){
 return (iVal!=="" && iVal!=null && iVal!==undefined && typeof(iVal) != "undefined") ? 1 : 0;
} // Returns 1 if set, 0 false
0
Mr Bill