2016-05-05 14 views
1

Ich muss auf einen Wert eines Objektfeldes überprüfen und abhängig davon möchte ich eine Variable setzen. Aber dieses Feld ist nur ein optionales Feld, vielleicht existiert es gar nicht. Was ist der richtige Weg, um den Wert zu überprüfen?Wie überprüft man den Variablenwert, wenn dieser nicht definiert ist?

Wenn ich nur var result = (data.profile.anyField == 'something') verwenden würde, würde ich einen Fehler erhalten, wie ich anyField von undefined nicht verwenden kann, wenn Profil nicht festgelegt ist.

So würde ich es so machen, aber ich denke, es kann ein wenig schlauer und kürzer gemacht werden:

var modus; 
if (Data.profile) modus = (Data.profile.anyField == 'something') ? 'setValue' : ''; 
else modus = ''; 

this.modus = new ReactiveVar(modus); 

Und die zweite Frage ist, ob es richtig ist, den Wert von modus auf einem setzen leerer String? Das Ergebnis sollte so aussehen:

this.modus = new ReactiveVar('setValue'); // if modus is true 
this.modus = new ReactiveVar();   // if modus is false 
+0

Was macht die 'ReativeVar'? Es hängt davon ab, ob Sie eine leere Zeichenfolge übergeben können oder nicht. Du könntest 'var modus = data &&data.profile \ data.profile.anyField == 'something'? 'setValue': ''; ' – putvande

Antwort

1

Frage 1:

Ein Einzeiler:

new ReactiveVar(Data.profile && Data.profile.anyField == 'something' ? 'setValue' : ''); 

Frage 2:

Ersetzen Sie die leere Zeichenkette mit undefined

Verwandte Themen