André Laugks: verschiedene Möglichkeiten von if-Abfragen

Hallo!

Erstmal, kann es sein, daß Netscape 4.5 keine JavaScriptfehlermeldungen, in Form eines Alertfensers rausschmeißt? Also JavaScriptError in Zeile so und so! Ich habe nur immer eine Meldung in der Statuszeile und dann auch nur JavaScript Error.

Nun zu meiner eigentlichen Frage. Diese drei Funktionen bzw. if-Abfragen bewirken alle das Selbe, sie sind eben nur verschieden Aufgebaut. Kann mir jemand sagen, welche die bessere ist, also welche am kompatibelsten ist? mein Gefühl sagt mir, "André, bei der dritten kann man sehr schnell Fehler einbauen"!

function eins() {

var x = 17;
var y = 10;

if (x == y) alert("x ist gleich y");
if (x > y) alert("x ist grosser als y");
if (y > x) alert("y ist grosser als x");

}

function zwei() {

var x = 10;
var y = 10;

if (x == y) alert("x ist gleich y");
    else if (x > y)  alert("x ist grosser als y");  
       else  if (y > x) alert("y ist grosser als x");
}

function drei() {

var x = 10;
var y = 17;

if (x == y) {
  alert("x ist gleich y");
} else {
     if (x > y) {
       alert("x ist groesser als y");
     } else {
          alert("y ist groesser als x");
     }
}
}

Vielen Dank

André

  1. Hallo!

    Erstmal, kann es sein, daß Netscape 4.5 keine JavaScriptfehlermeldungen, in Form eines Alertfensers rausschmeißt? Also JavaScriptError in Zeile so und so! Ich habe nur immer eine Meldung in der Statuszeile und dann auch nur JavaScript Error.

    Du weißt eh, dass du dir die Fehlermeldungen mit "javascript:" in der Adressleiste anzeigen kannst (Fenster öffnet sich)?

    Nun zu meiner eigentlichen Frage. Diese drei Funktionen bzw. if-Abfragen bewirken alle das Selbe, sie sind eben nur verschieden Aufgebaut. Kann mir jemand sagen, welche die bessere ist, also welche am kompatibelsten ist? mein Gefühl sagt mir, "André, bei der dritten kann man sehr schnell Fehler einbauen"!
    [...]
    function zwei() {

    var x = 10;
    var y = 10;

    »»

    if (x == y) alert("x ist gleich y");
        else if (x > y)  alert("x ist grosser als y");  
           else  if (y > x) alert("y ist grosser als x");
    }

    [...]

    Das ist mit Abstand am Besten. Ich würde mir aber angewöhnen mit { und } zu arbeiten. Also:
    if (x == y) { alert("x ist gleich y"); }
    else if (x > y) { alert("x ist grosser als y"); }
    else if (y > x) { alert("y ist grosser als x"); }
    Das ist einerseits am sichersten, andererseits notwendig, wenn du mehr als nur eine Anweisung verwenden willst.

    Die Funktion drei ist sehr umständlich und verwirrend, also eher nicht verwenden...

    Zur Kompatibilität gibt es nur zu sagen, dass alle Varianten mit allen Browsern funktionieren bzw. funktionieren sollten.

    Viel Spaß beim weiteren JavaScript lernen,
    Alexander

  2. Hallo André!

    Diese drei Funktionen bzw. if-Abfragen bewirken alle das Selbe, sie sind eben nur verschieden Aufgebaut. Kann mir jemand sagen, welche die bessere ist, also welche am kompatibelsten ist?

    Ich wuerde Funktion vier nehmen <g>:

    function vier() {

    var x = 10;
    var y = 10;

    if (x == y) alert("x ist gleich y");
    else if (x > y)  alert("x ist grosser als y");  
    else alert("y ist kleiner als x");
    }

    Denn in Deinen drei Funktionen haben die beiden letzten Zweige jeweils den gleichen alert() - ich nehme aber an, das war nur ein Kopierfehler hier in der Message.
    Am "logischsten" finde ich die Funktion "zwei" bei dir. Deshalb basiert obige "vier" auch darauf. Nur das letzten "else if" kann man auch in ein einfaches "else" ohne Bewertung aendern. Denn die beiden Faelle davor lassen ja nichts anderes mehr zu, als dass x kleiner ist als y.

    viele Gruesse
      Stefan Muenz

    1. Hallo Stefan!
      Ich glaube du hast etwas ungenau gelesen!

      Diese drei Funktionen bzw. if-Abfragen bewirken alle das Selbe, sie sind eben nur verschieden Aufgebaut. Kann mir jemand sagen, welche die bessere ist, also welche am kompatibelsten ist?

      Ich wuerde Funktion vier nehmen <g>:

      function vier() {

      var x = 10;
      var y = 10;

      if (x == y) alert("x ist gleich y");
      else if (x > y)  alert("x ist grosser als y");  
      else alert("y ist kleiner als x");

      // "x ist grosser als y" ist das gleich wie "y ist kleiner als x" <g>

      }

      Denn in Deinen drei Funktionen haben die beiden letzten Zweige jeweils den gleichen alert() - ich nehme aber an, das war nur ein Kopierfehler hier in der Message.
      Am "logischsten" finde ich die Funktion "zwei" bei dir. Deshalb basiert obige "vier" auch darauf. Nur das letzten "else if" kann man auch in ein einfaches "else" ohne Bewertung aendern. Denn die beiden Faelle davor lassen ja nichts anderes mehr zu, als dass x kleiner ist als y.

      Ansonsten stimme ich dir zu.
      Viele Grüße,
      Alexander

  3. Hallo,

    Erstmal, kann es sein, daß Netscape 4.5 keine JavaScriptfehlermeldungen, in Form eines Alertfensers rausschmeißt? Also JavaScriptError in Zeile so und so! Ich habe nur immer eine Meldung in der Statuszeile und dann auch nur JavaScript Error.

    Trage einfach in die Netscape ini-Datei "prefs.js" in deinem user-Verzeichnis folgende Zeile ein:

    user_pref("javascript.console.open_on_error", true);

    Dann erhaelst du bei jedem Java-Script-Error detailierte Fehlermeldungen.

    Gruss, Tom.

  4. Hallo André!

    Erstmal, kann es sein, daß Netscape 4.5 keine JavaScriptfehlermeldungen, in Form eines Alertfensers rausschmeißt? Also JavaScriptError in Zeile so und so! Ich habe nur immer eine Meldung in der Statuszeile und dann auch nur JavaScript Error.

    Doch!
    In der Statuszeile steht eigentlich was zu tun ist:
    In der Adressenzeile     javascript:     (mit dem Doppelpunkt) eingeben. Dann bekommst du die Konsole zu sehen mit allen Fehlermeldungen.
    Die Lösung von Thomas Keller ist aber einfacher und von Dauer.

    Grüße
    Thomas