Funktionen

  • Adressname der Version: JavaScript/javascript_guide/Funktionen
  • Titel der Version: Funktionen
  • ID der Version: 331303
  • Erstellt:
  • Autor: eminor
  • Aktuelle Version? Nein
  • Kommentar

Inhalt der Version

Funktionen sind einer der fundamentalen Aufbaublöcke von JavaScript. Eine Funktion ist eine Prozedur - ein Satz von Anweisungen die eine Aufgabe erledigen oder einen Wert berechnen. Damit eine Funktion benutzt werden kann, muss diese im selben Sichtbarkeitsbereich definiert werden, von dem aus sie aufrufbar sein soll.

Definieren von Funktionen

Eine Funktionsdefinition (auch Funktionsdeklaration genannt) setzt sich zusammen aus dem Schlüsselwort function, gefolgt von:

  • Dem Namen der Funktion.
  • Einer Liste von Argumenten, die durch ein Komma getrennt und in Klammern eingeschlossen werden.
  • Den JavaScript Anweisungen, welche definieren, was die Funktion tun soll, eingeschlossen in geschweifte Klammern.

Der folgende Code definiert zum Beispiel eine einfache Funktion square:

function square(number) {
  return number * number;
}

Diese Funktion nimmt ein Argument number entgegen. Die Funktion besteht aus einer Anweisung, die festlegt, dass number mit sich selbst multipliziert und das Ergebnis zurückgeliefert werden soll. Mit dem Schlüsselwort return wird also der Rückgabewert der Funktion festgelegt.

return number * number;

Einfache Parameter (wie z. B. Numbers) werden als Wert (by value) an die Funktion übergeben. Das bedeutet, der Wert wird zwar an die Funktion übergeben, jedoch gelten Änderungen des Werts, die von der Funktion vorgenommen werden, nur innerhalb der Funktion selbst und nicht etwa global oder in der aufrufenden Funktion.

Wird hingegen ein Objekt (z. B. ein nicht-primitiver Wert, wie ein Array oder ein benutzerdefiniertes Objekt) als Parameter an eine Funktion übergeben und Eigenschaften dieses Objekts von der Funktion verändert, so gelten diese Änderungen auch außerhalb der Funktion.

Zum Beispiel:

function myFunc(theObject) {
  theObject.make = "Toyota";
}

var mycar = {make: "Honda", model: "Accord", year: 1998},
    x,
    y;

x = mycar.make;     // x bekommt den Wert "Honda"

myFunc(mycar);
y = mycar.make;     // y bekommt den Wert "Toyota"
                    // (Die make-Eigenschaft wurde von der Funktion geändert)

Es sei angemerkt, dass die Zuweisung eines neuen Objekts an den Parameter innerhalb der Funktion, das übergebene Objekt nicht verändert, da hierdurch nur der Wert des Parameters selbst geändert wird:

function myFunc(theObject) {
  theObject = {make: "Ford", model: "Focus", year: 2006};
}

var mycar = {make: "Honda", model: "Accord", year: 1998},
    x,
    y;

x = mycar.make;     // x gets the value "Honda"

myFunc(mycar);
y = mycar.make;     // y still gets the value "Honda" 

Beim ersten Beispiel wurde das Objekt mycar an die Funktion myFunc übergeben, welche das Objekt veränderte. Beim zweiten Beispiel wurde das übergebene Objekt von der Funktion nicht verändert; stattdessen wurde eine neue lokale Variable mit dem selben Namen erzeugt, was keinen Effekt auf das übergebene Objekt selbst hatte.

Bei JavaScript kann eine Funktion abhängig von einer Bedingung definiert werden:

if (num == 0){
  function myFunc(theObject) {
    theObject.make = "Toyota"
  }
}

Wenn num nicht dem Wert 0 entspricht, wird die Funktion nicht definiert und jeder Versuch eines Aufrufs würde scheitern.

Fortsetzung folgt ...

Quelltext der Version

<p>Funktionen sind einer der fundamentalen Aufbaublöcke von JavaScript. Eine Funktion ist eine Prozedur - ein Satz von Anweisungen die eine Aufgabe erledigen oder einen Wert berechnen. Damit eine Funktion benutzt werden kann, muss diese im selben Sichtbarkeitsbereich definiert werden, von dem aus sie aufrufbar sein soll.</p>
<h3 id="Definieren_von_Funktionen">Definieren von Funktionen</h3>
<p>Eine Funktionsdefinition (auch Funktionsdeklaration genannt) setzt sich zusammen aus dem Schlüsselwort <code>function</code>, gefolgt von:</p>
<ul>
  <li>Dem Namen der Funktion.</li>
  <li>Einer Liste von Argumenten, die durch ein Komma getrennt und in Klammern eingeschlossen werden.</li>
  <li>Den JavaScript Anweisungen, welche definieren, was die Funktion tun soll, eingeschlossen in geschweifte Klammern.</li>
</ul>
<p>Der folgende Code definiert zum Beispiel eine einfache Funktion <code>square</code>:</p>
<pre class="brush: js">
function square(number) {
  return number * number;
}
</pre>
<p>Diese Funktion nimmt ein Argument <code>number</code> entgegen. Die Funktion besteht aus einer Anweisung, die festlegt, dass <code>number</code> mit sich selbst multipliziert und das Ergebnis zurückgeliefert werden soll. Mit dem Schlüsselwort <code>return</code> wird also der Rückgabewert der Funktion festgelegt.</p>
<pre class="brush: js">
return number * number;
</pre>
<p>Einfache Parameter (wie z. B. Numbers) werden als Wert (by value) an die Funktion übergeben. Das bedeutet, der Wert wird zwar an die Funktion übergeben, jedoch gelten Änderungen des Werts, die von der Funktion vorgenommen werden, nur innerhalb der Funktion selbst und nicht etwa global oder in der aufrufenden Funktion.</p>
<p>Wird hingegen ein Objekt (z. B. ein nicht-primitiver Wert, wie ein Array oder ein benutzerdefiniertes Objekt) als Parameter an eine Funktion übergeben und Eigenschaften dieses Objekts von der Funktion verändert, so gelten diese Änderungen auch außerhalb der Funktion.</p>
<p>Zum Beispiel:</p>
<pre class="brush: js">
function myFunc(theObject) {
  theObject.make = "Toyota";
}

var mycar = {make: "Honda", model: "Accord", year: 1998},
    x,
    y;

x = mycar.make;     // x bekommt den Wert "Honda"

myFunc(mycar);
y = mycar.make;     // y bekommt den Wert "Toyota"
                    // (Die make-Eigenschaft wurde von der Funktion geändert)
</pre>
<p>Es sei angemerkt, dass die Zuweisung eines neuen Objekts an den Parameter innerhalb der Funktion, das übergebene Objekt nicht verändert, da hierdurch nur der Wert des Parameters selbst geändert wird:</p>
<pre class="brush: js">
function myFunc(theObject) {
  theObject = {make: "Ford", model: "Focus", year: 2006};
}

var mycar = {make: "Honda", model: "Accord", year: 1998},
    x,
    y;

x = mycar.make;     // x gets the value "Honda"

myFunc(mycar);
y = mycar.make;     // y still gets the value "Honda" 
</pre>
<p>Beim ersten Beispiel wurde das Objekt <code>mycar</code> an die Funktion <code>myFunc </code>übergeben, welche das Objekt veränderte. Beim zweiten Beispiel wurde das übergebene Objekt von der Funktion nicht verändert; stattdessen wurde eine neue lokale Variable mit dem selben Namen erzeugt, was keinen Effekt auf das übergebene Objekt selbst hatte.</p>
<p>Bei JavaScript kann eine Funktion abhängig von einer Bedingung definiert werden:</p>
<pre class="brush: js">
if (num == 0){
  function myFunc(theObject) {
    theObject.make = "Toyota"
  }
}
</pre>
<p>Wenn <code>num</code> nicht dem Wert <code>0</code> entspricht, wird die Funktion nicht definiert und jeder Versuch eines Aufrufs würde scheitern.</p>
<p><span style="color:#ff0000;">Fortsetzung folgt ...</span></p>
Zu dieser Version zurücksetzen