Javascript: Vergleichen wir Äpfel mit Birnen?
Wer schon einmal mit Javascript entwickelt hat, kennt das hier: == und === . Doch was ist der Unterschied zwischen diesen Vergleichsoperatoren? Und welche Variante soll man verwenden? Dieser Beitrag gibt die Antworten.
Ok, für den Titel müsste ich eigentlich schon fünf Euro ins Phrasenschwein werfen, aber es ist doch so: Es gibt zwei unterschiedliche Varianten des Vergleichsoperators - die zwei-Zeichen-Variante und die drei-Zeichen-Variante. Beide funktionieren, aber unterschiedlich. Während die zwei-Zeichen-Variante nur den Wert von zwei Variablen vergleicht, berücksichtigt die drei-Zeichen-Variante auch zusätzlich den Datentyp. Das klingt kompliziert, ist es aber nicht, wenn man folgendes Beispiel betrachtet:
var mein_string = "5";
var meine_zahl = 5;
if(mein_string == meine_zahl)
{
alert('Ja');
}
else
{
alert('nein');
}
if(mein_string === meine_zahl)
{
alert('ja');
}
else
{
alert('nein');
}
Wir haben hier zwei Variablen. Eine ist ein String und die andere eine Number. Die Datentypen sind also unterschiedlich. Der Vergleich in Zeile 4 ergibt true, weil bei der zwei-Zeichen-Variante der Datentyp nicht mit verglichen wird. Dagegen ergibt der Vergleich in Zeile 13 false, weil hier der Datentyp eben auch mit verglichen wird. Die Ausgabe per alert() lautet deshalt "Ja" und "nein". Das Ganze gilt natürlich nicht nur für den Gleichheits-Operator == und === sondern auch für den Ungleichheits-Operator != und !=== . OK - Aber welche Variante soll ich jetzt nehmen?Erfahrene Javascript-Entwickler raten dazu immer die drei-Zeichen-Variante zu wählen, weil hier ein "richtiger" Vergleich stattfindet. Ich denke allerdings, dass nicht viel gegen die zwei-Zeichen-Variante spricht, weil man damit prinzipiell toleranter unterwegs ist. Allerdings verleitet das auch zum schlampigen programmieren. Ich muss also meinen Code nicht sauber halten, weil die Vergleiche eh tolerant mit meinen Variablen umgehen. Das ist tendenziell schlecht.
|
Kommentare