359 Stimmen

Warum liefert (0 < 5 < 3) true?

Ich spielte herum in jsfiddle.net und ich bin neugierig, warum dies wahr zurückgibt?

if(0 < 5 < 3) {
    alert("True");
}

Das gilt auch hier:

if(0 < 5 < 2) {
    alert("True");
}

Dies ist jedoch nicht der Fall:

if(0 < 5 < 1) {
    alert("True");
}

Ist diese Eigenart überhaupt nützlich?

453voto

Alan Geleynse Punkte 24223

Reihenfolge der Vorgänge Ursachen (0 < 5 < 3) in Javascript zu interpretieren als ((0 < 5) < 3) die Folgendes hervorbringt (true < 3) und true wird als 1 gezählt, so dass es true zurückgibt.

Dies ist auch der Grund, warum (0 < 5 < 1) gibt false zurück, (0 < 5) gibt true zurück, was wie folgt interpretiert wird 1 , was zu (1 < 1) .

64voto

CaffGeek Punkte 21343

Meine Vermutung ist, weil 0 < 5 wahr ist, und true < 3 wird geworfen auf 1 < 3 was wahr ist.

22voto

Jack Punkte 128223

Wahrscheinlich weil true wird angenommen als 1 also

0 < 5 < 3  -->  true < 3 -->  1 < 3  --> true

18voto

Harmen Punkte 21400

Denn true < 3 denn true == 1

11voto

Zach Johnson Punkte 22572

Was Ihre Frage betrifft, ob diese Eigenart jemals nützlich ist: Ich vermute, dass es einige Fälle geben könnte, in denen es nützlich wäre (wenn Sie einen komprimierten Code wollen), aber wenn Sie sich darauf verlassen, wird die Verständlichkeit Ihres Codes (höchstwahrscheinlich) stark eingeschränkt.

Es ist so ähnlich wie die Verwendung von post/pre increment/decrement als Teil von größeren Ausdrücken. Können Sie auf den ersten Blick erkennen, was das Ergebnis dieses Codes ist?

int x = 5;
int result = ++x + x++ + --x;

Hinweis: Bei diesem Code können Sie je nach Sprache und Compiler manchmal sogar unterschiedliche Ergebnisse erzielen.

Es ist eine gute Idee, die Machen Sie es sich und dem Nächsten leicht die Ihren Code lesen werden. Schreiben Sie klar und deutlich, was Sie eigentlich wollen, und verlassen Sie sich nicht auf Nebeneffekte wie die implizite Umwandlung von Booleschen Werten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X