2016-08-09 65 views
-6

Irgendwelche Ideen über den Ausdruck es noch kürzer zu machen:Shorhand für a = (a == val1)? null: val1;

a = (a == val1) ? null : val1; 

Die Logik dieses Ausdrucks (falls wichtig) tatsächlich ist:

machen es (unter anderem) erweitert, wenn sie angeklickt wird und nicht erweitert NOCH. Und wenn es BEREITS erweitert ist und nur geklickt hat, dann schließe es (dann auf Null gesetzt). Mit anderen Worten, Einstellung a als val1 nur dann ablehnen, wenn sie bereits auf val1 gesetzt ist und sie durch null ersetzen (Wechsel von geöffnet zu geschlossen).

+3

Auch der Code funktioniert nicht. Meinst du ":" statt "||"? –

+0

@CBroe Der Grund: sieht zu lang für mich aus ... Nur neugierig, wenn ich etwas vermisse, so dass SO-Community helfen könnte ... Refactoring ... Optimierung ... Das ist der einzige Grund ... – Haradzieniec

+0

@HemanGandhi Sie 'hast recht. Vielen Dank. Der Fehler wurde aktualisiert. – Haradzieniec

Antwort

1

Sie könnten a = !a && val1 tun, wenn es Ihnen nichts ausmacht, zwischen false und val1 zu wechseln.

Dies basiert auf dem Verhalten von && Operator in JavaScript: Wenn erster Operand wahr ist && Operator weist den zweiten Operanden zu, sonst gibt es den ersten Operanden zurück.

Bitte beachten Sie: Dies macht Ihren Code schwieriger zu lesen. Wenn Sie möchten, dass dies für einen anderen Entwickler sinnvoll ist, müssten Sie einen Kommentar hinzufügen, der erklärt, was diese Zeile macht.

+0

* "und operator in javascript: Wenn beide Bedingungen wahr sind, && operator den zweiten Parameter zuweist, gibt er sonst false zurück" * - Nicht ganz. Wenn der erste Operand truthy ist, gibt '&&' den zweiten Operanden unabhängig von seinem Wert zurück, andernfalls gibt er den ersten zurück. – nnnnnn

+0

Sie haben Recht, ich habe es falsch verstanden, wird aktualisiert. Vielen Dank! –