Sie denken es nicht wie ein Steuer- Block (dh: ein Wenn-sonst oder ein Schalter). Es ist nicht wirklich für das Ausführen von Code innerhalb davon gedacht.
Sie können. Es wird nur sehr hässlich, sehr schnell, was den Zweck besiegt.
Was Sie wirklich wollen, um es für ist Werte zuweisen.
Ihr erstes Beispiel nehmen und es auf den Kopf ein wenig drehen, erhalten Sie:
direction = (this.dragHandle.hasClass("handle-low")) ? "left" : "right";
See. Nun, was ich getan habe, ist, dass ich etwas genommen habe, das einen if/else oder einen Schalter benötigt hätte, der verwendet worden wäre, um diesen einen Wert zuzuweisen, und ich habe es schön und schön aufgeräumt.
Sie können ein anderes, wenn auch tun Art von ternären:
y = (x === 2) ? 1 : (x === 3) ? 2 : (x === 4) ? 7 : 1000;
Sie können auch Code Feuer verwenden, wenn Sie möchten, aber es wird wirklich schwierig, nach einer Weile, zu wissen, was gehen, wo (das vorherige Beispiel sehen, um zu sehen, wie selbst Zuordnung auf einem Blick seltsam aussehenden beginnen) ...
((this.dragHandle.hasClass("...")) ? fireMe(something) : noMe(somethingElse));
... dies wird in der Regel arbeiten.
Aber es ist nicht wirklich hübscher oder nützlicher als eine wenn oder eine Verzweigung, sofort-aufrufende Funktion (und Nicht-JS-Programmierer oder ungeschulte JS-Programmierer werden sich selbst versuchen, Ihren Code zu pflegen).
Die Fachausdrücke für diese Fragmente sind _konditionelle Ausdrücke_, die den bedingten Operator_ '?:' Verwenden. Da dieser Operator drei Operanden benötigt, wird er als ternärer Operator bezeichnet. –
2 mal schneller http://jsperf.com/speed-test-for-conditions –