Lambach: welche bedeutung hat das ?

also ich hab jetzt in mehreren codes gesehen
bsp: NS4 = (document.layers) ? true : false;

kann mir jemand die genaue bedeutung erklären, weil es zieht so schon ziemlich nützlich aus aber wie genau setzt man es ein?

  1. N'Obend

    bsp: NS4 = (document.layers) ? true : false;

    NS4 ist eine neue Variable. Der wird jetzt entweder true oder false zugewiesen, je nachdem, ob document.layers existiert oder nicht.

    Hinweis: document.layers kennt nur der Netscape 4.x

    Steht nachher NS4 auf true, weist du, dass der Benutzer Netscape 4.x benutzt und kannst in deinen Scripten eine entsprechend angepasste Version ausführen lassen.

    Tschö,
    dbenzhuser

    1. Hallo,

      Dbenzhuser hat natuerlich vollkommen recht.
      Ich hatte mich seinerzeit eine ganze Zeitlang am ?: Operator schwergetan, deshalb nochmal zur Erklaerung die lange Schreibweise.

      if (document.layers == true)//wenn der Browser document.layers kennt
      {
        NS4 = true;               // haben wir es mit NS4 zu tun
      }
      else
      {
        NS4 = false;              //  anderfalls nicht, also ist der browser irgendein anderer
      }

      Dieter

      1. Hi,

        [NS4 = (document.layers) ? true : false;]

        if (document.layers == true)//wenn der Browser document.layers kennt

        nicht ganz; von true ist da nicht die Rede. Wäre auch falsch, denn document.layers ist selbst in Netscape 4 nicht true.

        Das ganze nennt sich übrigens Bedingungs-Operator, einer der seltenen trinären Operatoren.

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hallo Cheatah,

          Stimmt, hab ich im Eifer der Missionierung uebersehen.

          Dieter

        2. Hallo,

          nicht ganz; von true ist da nicht die Rede. Wäre auch falsch, denn document.layers ist selbst in Netscape 4 nicht true.

          Wie ist den genau die Auswertung?
          if (document.layers != NULL)

          Gruß,
          Henning

          1. Hi,

            Wie ist den genau die Auswertung?

            lass Dir in verschiedenen Browsern alert(document.layers) ausgeben.

            if (document.layers != NULL)

            Warum willst Du document.layers unbedingt mit irgendetwas vergleichen?

            Cheatah

            --
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. Hallo,

              lass Dir in verschiedenen Browsern alert(document.layers) ausgeben.

              Ein Netscape 4 habe ich nicht, andere geben undefined aus.

              Warum willst Du document.layers unbedingt mit irgendetwas vergleichen?

              Ich wollte einfach mal wissen aufgrund welches Ergebnis, die Entscheidung getroffen wird, so dass im Operator der 'FALSE'-Zweig gewählt wird.

              Gruß,
              Henning

              1. Hi,

                Ich wollte einfach mal wissen aufgrund welches Ergebnis, die Entscheidung getroffen wird, so dass im Operator der 'FALSE'-Zweig gewählt wird.

                bei "if (x)" muss "x" ein Boole'scher Ausdruck sein. Das bedeutet, dass darin alles, worauf dies nicht zutrifft, konvertiert wird. So wird undefined etwa false, 0 ebenfalls, "" dito. 1 und "foo" hingegen werden true. _Leider_ sind z.B. new Array() und new Object() ebenfalls true.

                Forcieren kannst Du den Boole'schen Wert mit doppelter Verneinung.

                Cheatah

                --
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
            2. Hallo Cheatah,

              if (document.layers != NULL)

              Warum willst Du document.layers unbedingt mit irgendetwas
              vergleichen?

              Eine Unart von Java-Programmierern.

              Grüße,
               C*scnr*K

              --
              <zentrum> wie war noch mal die option in make.conf fuer das benutzen von pipes um das compile zu beschluenigen?
              <CK1> CFLAGS="-pipe"
              <torsten> Oder man frage einen Gentooer seiner Wahl, wie man 2 km Compilerswitches fuer seine CPU hinbekommt ;)
              http://wwwtech.de/
              1. Hallo,

                Eine Unart von Java-Programmierern.

                Pah, immer diese C Schnösel. Die sind doch nur neidisch, weil sie hinterher immer selbst aufräumen müssen.

                Gruß,
                Hen*SCNR*ning

    2. also ? kommt hinter einer variablen zuweiseung, und danach gibt man 2 werte ein. wenn das Objekt existiert nimmt die variable den 1. wert an wenn nicht den 2.

      soweit richtig verstanden?

      welche fragen sich mir dabei noch auftun sind
      geht das nur mit objekte oder auch mit anderen typen?
      müssen die werte dorthinter boolsche ausdrücke sein?
      gibt es noch andere einsatzbereich, funktionen vom "?" ?

      1. Hallo,

        ?: funktioniert im Prinzip immer dann, wenn Du einer Variablen in einer Bedingung einen Wert zuweisen willst
        Anstatt
        if(bedingung)
        {
          foo = 'bar'
        }
        else
        {
          foo = 'quux'
        }
        kannst Du immer sagen
        foo = bedingung ? 'bar' : 'quux'
        Das funktioniert in einer ganzen Anzahl von Programmiersprachen genauso.

        Dieter

      2. Hi,

        soweit richtig verstanden?

        japp. "a ? b : c" ist identisch mit "if (a) { b } else { c }", nur dass es kein eigener Anweisungsblock sein muss.

        geht das nur mit objekte oder auch mit anderen typen?
        müssen die werte dorthinter boolsche ausdrücke sein?
        gibt es noch andere einsatzbereich, funktionen vom "?" ?

        Das sollte damit ebenfalls beantwortet sein.

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hi,

          japp. "a ? b : c" ist identisch mit "if (a) { b } else { c }", nur dass es kein eigener Anweisungsblock sein muss.

          Nein. Während "if (a) { b } else { c }" keinen Wert hat (weil es eine Anweisung ist), hat "a ? b : c" einen Wert (weil es ein Ausdruck ist)

          cu,
          Andreas

          --
          MudGuard? Siehe http://www.Mud-Guard.de/
          Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.