JavaScript - Grundlagen - Bedingungen und Schleifen
1. Bedingungen
Hier muss ich eigentlich gar nichts dazu sagen, da die Bedingungen in PHP und JavaScript identisch sind. Der Übersichtlichkeit halber liste ich sie noch mal kurz auf.
if
if - else if - else
switch
- Trinitäts-/Ternäroperator
Obacht!
In PHP kann man sowohl else if
als auch elseif
schreiben. In JavaScript nicht! Da gibt es nur ein
else if
. Also immer schön ein Leerzeichen dazwischen setzen.
2. Schleifen
Hier gilt (fast) dasselbe wie bei den Bedingungen. Es gibt auch in JavaScript die for
-, while
- und
do while
-Schleife. Allerdings gibt es zwei Unterschiede.
foreach
Diese Schleife zur Verarbeitung von Arrays existiert zwar in JavaScript, aber leider erst ab der Version 1.7. Und das bedeutet, dass man sie vergessen kann, da einige Browser noch nicht so weit sind. Stattdessen gibt es eine Alternative.
for ... in
Dies ist das Pendant zu foreach
in PHP und funktioniert genau so. Die erste Variable bla
beinhaltet dann
die Indizes des Arrays blubb
. Und so kann man Letzteres problemlos durchlaufen.
var blubb = new Array ();
blubb['bla'] = 'Laber';
blubb['schwall'] = 'Sülz';
blubb['kräh'] = 'Jodelbla';
for (bla in blubb)
{
alert (bla + '-' + blubb[bla]);
}
for
-Schleifen
Hier muss man auf eine Sache höllisch aufpassen. Und zwar auf die Definition der hochzählenden Variable. In PHP funktioniert folgender Code einwandfrei.
<?php
$bla = array ('blubb', 'blubber', 'schwall', 'laber');
$find = array ('dumdidum', 'blubb', 'jodelblah');
for ($i = 0; $i < count($find); $i++)
{
if ('blubb' == $find[$i])
{
gotcha ($bla, $find[$i]);
}
}
function gotcha ($values, $hit)
{
for ($i = 0; $i < count($values); $i++)
{
if ($values[$i] == $hit)
{
echo 'gefunden';
break;
}
}
}
?>
In JavaScript nicht!
Bei folgendem Code erzeugt ihr eine Endlosschleife und müsst euren Browser abschießen, damit ihr ihn wieder nutzen könnt.
<script type="text/javascript">
bla = new Array ('blubb', 'blubber', 'schwall', 'laber');
find = new Array ('dumdidum', 'blubb', 'jodelblah');
for (i = 0; i < find.length; i++)
{
if ('blubb' == find[i])
{
gotcha (bla, find[i]);
}
}
function gotcha (values, hit)
{
for (i = 0; i < values.length; i++)
{
if (values[i] == hit)
{
alert (i + 'gefunden');
break;
}
}
}
</script>
Erläuterung
Auf die Feinheiten möchte ich hier noch nicht eingehen. Aber der folgende Hinweis sei mir gestattet, da er ein klassischer Anfängerfehler
ist. Von PHP ist man es gewöhnt, dass normale Variablen in einer Funktion immer nur einen lokalen Geltungsbereich haben. Und leider
vergisst man, dass es in JavaScript anders ist. Darum sollte man hier bei Schleifen immer mit einem var
arbeiten. Denn dann hat man die Funktionsweise von PHP.
<script type="text/javascript">
...
for (var i = 0; i < find.length; i++)
{
...
}
function gotcha (values, hit)
{
for (var i = 0; i < values.length; i++)
{
...
}
}
</script>
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt