Bitte erklärt mir diese Codezeile...

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Bitte erklärt mir diese Codezeile...

    Hi,

    kann mir jemand diese Zeile erklären (sie stammt aus einem _funktionierenden_ script)?

    this.evnt=bw.dom?document.getElementById(obj):bw.ns4?document.layers[obj]:0;


    Ihr braucht (und könnt) mir sicher nicht sagen, was sie genau tut, aber vielleicht könnt Ihr mir die Syntax erklären? Handelt es sich hierbei um diese ?: entweder-oder Operatoren? Aber wie soll man das verstehen?
    wenn wahr, dass: this.event = bw.dom
    dann: document.getElementById(obj)etc.etc.etc.?

    ... doch was ist dann der "sonst"- part? Und was bedeuten die übrigen ?

    Oder so:
    wenn wahr dass: this.event = bw.dom
    dann: document.getElementById(obj)
    sonst: bw.ns4?doc.layers[obj]:0

    Und der "sonst"-Teil dann eben noch mal eine solche Verzweigung. Doch was ist dann die Frage? wird bw.ns4 auf "true" geprüft?

    wäre es also möglich, folgendes zu schreiben:

    var a,b=1;
    var c,d=0;
    a=0? mach.dies:c? mach.das:a? mach.jenes:5;
    und das Resultat wäre mach.jenes?
    Und was würde bei folgender Zeile passieren?

    a=0? mach.dies:c? mach.das:c? mach.jenes:5;

    Hätte c danach den Wert 5?

    Danke, danke für alle Mühen!

  • #2
    Dies sollte dir ne Antwort darauf geben:

    http://de.selfhtml.org/javascript/sp...#entweder_oder

    Kommentar


    • #3
      jupp,

      diesen Link kenne ich. Allerdings wird dort nur ein einfacher Fall vorgestellt und die Möglichkeit (oder Unmöglichkeit) der Verschachtelung solcher entweder-oder-Strukturen nicht behandelt.

      Desweiteren findet sich im selfhtml-Beispiel mit == ein logischer Operator den ich kenne, in meinem angeführten Beispiel mit = eigentlich eine Wertzuweisung, kein log. Operator.

      Diese beiden Unterschiede machen selfhtml in diesem Fall leider zu ungenau...

      Also weiterhin die Frage: Kann jemand kurz zwei Worte dazu sagen?

      Kommentar


      • #4
        Original geschrieben von alberlie
        Allerdings wird dort nur ein einfacher Fall vorgestellt und die Möglichkeit (oder Unmöglichkeit) der Verschachtelung solcher entweder-oder-Strukturen nicht behandelt.
        Ja, und?
        Du kannst in der Programmierung so gut wie alles verschachteln - also wo ist das Problem?
        Desweiteren findet sich im selfhtml-Beispiel mit == ein logischer Operator den ich kenne, in meinem angeführten Beispiel mit = eigentlich eine Wertzuweisung, kein log. Operator.

        Diese beiden Unterschiede machen selfhtml in diesem Fall leider zu ungenau...
        Nein.

        Aber vielleicht solltest du selber ein bisschen mehr mitdenken ...?

        Eine einfache Entweder-Oder-Abfrage wird mit einer Bedingung eingeleitet. [...] Dahinter wird ein Fragezeichen notiert. Hinter dem Fragezeichen wird ein Wert angegeben, der aktuell ist, wenn die Bedingung erfüllt ist. Dahinter folgt ein Doppelpunkt, und dahinter ein Wert für den Fall, dass die Bedingung nicht erfüllt ist.
        Was bitte ist daran nicht verständlich?

        Ob diese Bedingung jetzt aus einem wirklichen Vergleich unter Benutzung des ==-Operators besteht, oder nur aus einem Ausdruck/Wert, der - ganz wie beim "normalen" If auch - wahr oder falsch ergeben kann, ist dabei absolut unerheblich.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Original geschrieben von wahsaga
          Ja, und? Du kannst in der Programmierung so gut wie alles verschachteln - also wo ist das Problem?

          schön. Gut zu wissen. Wenn man das auch ohne latentes Generftsein zum Ausdruck bringen kann, ist das sogar noch schöner.


          Ob diese Bedingung jetzt aus einem wirklichen Vergleich unter Benutzung des ==-Operators besteht, oder nur aus einem Ausdruck/Wert, der - ganz wie beim "normalen" If auch - wahr oder falsch ergeben kann, ist dabei absolut unerheblich.
          tja, und zumindest nach meinem Steinzeitwissen ergibt ein Ausdruck der Art A = B niemals wahr oder falsch sondern B... Was für einen Wahrheitswert soll eine Wertzuweisung haben, oder anders: Wie kann eine Wertzuweisung jemals "false" sein? Selbst bei A = false sollte doch die Wertzuweisung selbst true sein, da sie "funktioniert" hat?

          Kommentar


          • #6
            Original geschrieben von alberlie
            tja, und zumindest nach meinem Steinzeitwissen ergibt ein Ausdruck der Art A = B niemals wahr oder falsch sondern B...
            Ein (wahrheits-)logischer Ausdruck kann immer nur wahr oder falsch sein.

            Und in so gut wie jeder nicht sonderlich typ-strengen Sprache gibt es Regeln, wie nicht-boolesche Werte in boolesche zu "konvertieren" sind.
            Wie kann eine Wertzuweisung jemals "false" sein? Selbst bei A = false sollte doch die Wertzuweisung selbst true sein, da sie "funktioniert" hat?
            Du schriebst es doch gerade selber: A = B ergibt B.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Original geschrieben von wahsaga
              Ein (wahrheits-)logischer Ausdruck kann immer nur wahr oder falsch sein.
              ...

              Du schriebst es doch gerade selber: A = B ergibt B.
              var a=2;
              var b=3;
              a=b?c=true:c=false;

              Das sollte (wenn ich deine Bemerkungen recht interpretiere) wohl ein wohlgeformter Ausdruck sein. Doch was wird hier geprüft? Nach "a=b" hat a einfach den Wert 3. Wenn das ginge, müsste

              3?c=true:c=false;

              genauso funktionieren.

              Sorry wenn ich mich so blöd anstelle, aber ich

              a) habe gestern sicher eine Stunde mich durch die verschiedenen Posts hier geklickt in der Hoffnung eine entsprechende Codezeile zu finden
              b) komme von Pascal und (Anfänger)-php her und da ist obiger Ausdruck einfach Humbug...
              c) habe zu Typenkonversionen nur gefunden, dass diese problemlos möglich sind, nicht welche Regeln es dafür gibt, schon gar nicht, wie Zahlenwerte als Wahrheitswerte interpretiert werden, let alone dass so was möglich ist....

              Kommentar


              • #8
                Original geschrieben von alberlie
                var a=2;
                var b=3;
                a=b?c=true:c=false;

                Das sollte (wenn ich deine Bemerkungen recht interpretiere) wohl ein wohlgeformter Ausdruck sein.
                Ja.
                Doch was wird hier geprüft?
                Dazu wurde die entsprechende Stelle in SELFHTML doch schon verlinkt, und sogar auszugsweise zitiert.
                Nach "a=b" hat a einfach den Wert 3.
                In deinem Beispiel steht aber kein a=b, sondern a={Ergebnis des nachfolgenden logischen Ausdrucks}.
                Wenn das ginge, müsste
                3?c=true:c=false;
                genauso funktionieren.
                Tut's ja auch theoretisch - ist aber praktisch nur sehr eingeschränkt sinnvoll.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar

                Lädt...
                X