Javascript isset Funktion
Erstellte ich eine isset - Funktion, um zu überprüfen, ob eine variable definiert ist und nicht null.
Hier ist mein code:
isset = function(a) {
if ((typeof (a) === 'undefined') || (a === null))
return false;
else
return true;
};
var a = [];
//Test 1
alert(isset(a['not']); //Alerts FALSE -> works OK
//Test 2
alert(isset(a['not']['existent'])); //Error: Cannot read property 'existent' of undefined
Jeder Vorschlag zu machen, meine Funktion funktioniert für test 2?
Danke.
typeof
ein operator ist keine Funktion, Sie sollten loszuwerden, die ()
um die Werte, die Sie testen.es ist fraglich, einige bevorzugen Klammer für alle control-Anweisungen, um den code einheitlicher und lesbarer. Zum Beispiel, einige bevorzugen zu schreiben
return (true)
statt return true
. Es ist eine Frage der Vorlieben (und für die Fragestellung irrelevant).mögliche Duplikate von Javascript isset() equivalent
InformationsquelleAutor Tamás Pap | 2012-02-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie versuchen, zu überprüfen Eigentum einer unbestimmten Objekt. Es macht auch keinen Sinn. Sie schreiben konnte wie diese:
InformationsquelleAutor Andrey Selitsky
das wird nicht funktionieren, und Sie können nicht damit es funktioniert.
was passiert ist:
die js-engine versucht zu evaluieren['not'] und erhalten, ist "undefined", dann versucht er zum auswerten der Eigenschaft 'existent' des nicht und Sie bekommen den Fehler zu finden.
all das passiert vor den Aufruf Ihrer Funktion...
was Sie tun können, ist so etwas wie:
dann rufen Sie es wie folgt:
(**dies nur ein pseudo-code, müssen Sie möglicherweise, um es zu ändern ein bisschen tatsächlich funktioniert)
InformationsquelleAutor Nitzan Tomer
Test 2 wird nicht funktionieren, weil "a['not']['existent']", Wert-Auflösung vor "isset" - Funktion aufrufen, und führt zu einem Laufzeitfehler.
InformationsquelleAutor Sergey Ilinsky
Gut, Sie tun können, gerade dies:
1) wie wir in php:
2) wie ich in javascript:
InformationsquelleAutor aasim