2013-05-08 6 views
6

ich in der Regel Objekteigenschaften festgelegt, wie so,Wie kann ich einfach eine Variable auf false mit einem Standardwert von True setzen?

// Boolean 
this.listening = config.listening || true; 

Aber config.listening ist entweder wahr oder falsch, und in diesem Fall this.listening wird immer wahr sein, denn wenn config.listening falsch ist, wird es gleich wahr.

Gibt es eine bessere Möglichkeit, diese booleschen Eigenschaften festzulegen, ohne eine if-Anweisung ausführen zu müssen?

Gibt es in JavaScript eine if-iset-Funktion, um zu überprüfen, ob sie existiert und nicht, was ihr entspricht?

Antwort

12

Sie konnten die ternäre (bedingt) Operator wie folgt verwenden:

this.listening = config.listening === false ? false : true; 

Wenn config.listeningfalse ist, wird this.listening-false gesetzt. Wenn es ein anderer Wert ist, wird es auf true festgelegt.

Wenn Sie überprüfen wollen, ob es definiert ist, könnten Sie verwenden:

this.listening = typeof config.listening !== "undefined" 

Referenzen:

+1

Danke dafür, perfekt funktioniert – user2251919

+0

ha. Webstorm hat deine Antwort vereinfacht auf: config.listening! == false, scheint korrekt zu sein. –

+1

@AlexMills Du hast absolut recht! Condensing ist definitiv möglich, ich habe versucht, explizit/beschreibend zu sein, als ich dies schrieb (ich vermute) – Ian

3

Sie überprüfen müssen, um sicherzustellen, dass es nicht undefiniert, nicht dass es ein "falscher" Wert ist.

this.listening = config.listening!==undefined ? config.listening : true; 
+0

... oder "hören" in Config "möglicherweise – Pointy

+1

würde es besser sein 'typeof config.listening! ==" undefined "' oder ist das nur ein Lesbarkeitsfaktor – user2251919

+0

Ja, es wäre besser. (Oder "hören" in der Konfiguration). Siehe diese Frage für eine Diskussion zu diesem Thema: http://stackoverflow.com/questions/519145/how-can-i-check-whether-a-variable-is-defined-in-javascript –

-1

Der schnellste Weg wäre dies.

d = true; 

d kehrt wahr zurück.

Dann verwenden Sie einfach die! Operator, um den Boolean von wahr zu falsch zu wechseln.

d = !d; 

d gibt false zurück.

Dann immer wieder.

d = !d; 

d gibt wahr zurück.

+1

Um Ihre Antwort genauer auf das OP zu erläutern, könnten Sie diese Information hinzufügen. 'this.listening = !! config.listening'. Zwei NOTs behalten den tatsächlichen booleschen Wert bei, aber machen 'Null' oder 'undefiniert' als 'falsch'. Aber wieder, das ist nicht das OP sucht. Die Person sucht nach dem Standardwert als "wahr", selbst wenn "config.listening" nicht definiert ist – Lokesh

Verwandte Themen