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.
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();
}
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;
}
typeof wird den Zweck erfüllen, denke ich
if(typeof foo != "undefined"){}
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.
Nicht natürlich, nein ... Ein Googeln der Sache ergab jedoch Folgendes: http://phpjs.org/functions/isset:454
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.
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:{};
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.
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:
typeof(variable) !== "undefined"
prüft, ob die Variable überhaupt definiert istvariable !== 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)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 giltHoffe das hilft jemandem :)
Hier :)
function isSet(iVal){
return (iVal!=="" && iVal!=null && iVal!==undefined && typeof(iVal) != "undefined") ? 1 : 0;
} // Returns 1 if set, 0 false