Vielleicht verstehe ich die ternäre Operation aber nicht

Wenn ich recht habe, ist es

    test ? true : false

Das sollte also geben

function toto(x, y)
{ 
    return (x > 0 ? x < 7 ? true : false : false &&
                y > 0 ? y < 6 ? true : false : false)
}

Wahr nur wenn 0

Aber wenn ich es mache

toto(4,6)

Es gibt wahr zurück, warum? Was vermisse ich ?

0
Bobby 18 Apr. 2018 im 09:23

4 Antworten

Beste Antwort

Mach einfach so:

function toto(x, y)
{ 
    return (x > 0 ? x < 7 ? true : false : false ) &&
                ( y > 0 ? y < 6 ? true : false : false)
}

Mit der Klammer vor und nach exp1 und exp2 und ja, es ist ein bisschen unlesbar ^^

bearbeiten: würde ich auch tun

return (x > 0 && x < 7) && (y > 0 && y < 6)
1
Crocsx 18 Apr. 2018 im 06:33

Sie benötigen eslint, um Ihren Code zu formatieren. Dies ist der formatierte Code. Siehe:

function toto(x, y) {
  return x > 0
    ? x < 7
      ? true
      : false
    : false && y > 0
      ? y < 6
        ? true
        : false
      : false
}

Bild:

Bildbeschreibung hier eingeben Ich denke, es ist leichter zu verstehen

1
xianshenglu 18 Apr. 2018 im 06:27

Versuchen Sie nicht, dies zu erreichen? prüfen, ob x von 0..7 und y von 0..6 ist?

function toto(x, y)
{ 
return (x > 0 && x < 7) && (y > 0 && y < 6 );
}
0
Ludovit Mydla 18 Apr. 2018 im 06:31

Operator-Vorrang, der sich hier darauf auswirkt

function toto(x, y)
{ 
return ((x > 0 ? x < 7 ? true : false : false) && (y > 0 ? y < 6 ? true : false : false)) 
}
0
crack_iT 18 Apr. 2018 im 06:44