Vergleich auf undefined

  • Ich möchte per JavaScript eine Variable bzw. ein Array-Element auf seine Existenz hin untersuchen. Mein Array wird dynamsich
    mit Werten gefüllt. Ich möchte nun bestimmte Elemente darauf prüfen, ob diese einen Wert besitzen oder ob sie undefined sind.

    Folgender Code funktioniert bereits im IE:

    Code
    if (links[10] !== undefined) {
     ...
    }
    else {
      alert("Array-Element besitzt keinen Wert.");
    }

    Der Firefox stolpert hier irgendwie drüber, aber die Javaconsole gibt keine Fehler aus. Die Anweisungen im True-Block werden
    abgearbeitet. Wie muss also der Vergleich für den FF aussehen, damit er das richtige Ergebnis liefert?

    "Carpe Diem" powered by positiv Feelings

  • Moin!

    also " !== " gibt es nicht, wenn es ungleich sein soll, dann muß es " != " heißen, sonst " == ".

    Probieren mal dies:

    Code
    var links = new Array;
    if (!window.links[10])
       {alert("Array-Element besitzt keinen Wert.")}
    
    
    else
       {document.write(window.links[10]);}

    Gegenprobe:

    Code
    var links = new Array;
    links[10] = "Hallo";
    if (!window.links[10])
       {alert("Array-Element besitzt keinen Wert.")}
    
    
    else
       {document.write(window.links[10]);}

    G.a.d.M.

    Ronald
    ...sagte ich schon, daß ich Javascript hasse?

  • Zitat von Rocco

    dann ist dein "code" falsch... ;) ...ich glaub nämlich nicht, dass es den "befehl" undefined gibt, und wenn doch, dass man ihn so anwendet


    Code falsch - aha. Immer wieder eine gern gegebene Antwort ... :roll:
    undefined ist kein Befehl sondern ein Zustand der unter JS abgefragt werden kann. Das ist (fast) das Gleiche wie NULL.

    Zitat von Ronald

    also " !== " gibt es nicht, wenn es ungleich sein soll, dann muß es " != " heißen, sonst " == ".


    Bitte erst ein wenig recherchieren bevor du/ihr solche Aussagen trefft. Es stimmt zwar, dass dieser Operator selten angewandt wird
    und auch dass er in anderen Sprachen nicht existiert, aber in JS gibt es diesen auf jeden Fall.
    Die Operatoren === und !== werden Identitätsoperatoren genannt und prüfen nicht nur auf den gleichen Wert sondern auch auf
    den gleichen Typ. Folgendes Bsp. zeigt dies:

    Code
    var a = "1";
      var b = 1;
      var c = 1;
      if (a === b) { ... }  // ergibt false, da Wert zwar gleich aber Typ nicht gleich
      if (b === c) { ... }  // ergibt true, da Wert und Typ gleich sind


    Interessant ist hier auch, dass NULL === undefined false ergibt, da beide Zustaände intern unterschiedlich sind.

    Ok, aber dein Einwurf hat trotzdem was Gutes, denn ich habe den Vergleich nun so umgestrickt.

    Code
    if (!links[10] == "") { ... } else { alert("Link existiert nicht."); }


    Das funktioniert und somit THX 4 Help.

    "Carpe Diem" powered by positiv Feelings

  • Zitat von Torty
    Code
    if (!links[10] == "") { ... } else { alert("Link existiert nicht."); }


    Das funktioniert und somit THX 4 Help.

    um deinen quelltext etwas zu verschönern... schon mal die idee gehabt das so zu lösen?

    Code
    if (links[10]) { ... } else { alert("Link existiert nicht."); }
  • Ja, seltsamerweise würde dies auch funktionieren, obwohl der direkte Identitätsvergleich auf undefined nicht klappt.

    Mein Problem ist gelöst, aber die Frage steht trotzdem im Raum: Was gefällt dem Firefox nicht am oben gezeigten Vergleich mit !== ?

    "Carpe Diem" powered by positiv Feelings