# Übergabeparameter in Funktionen



## N3WM4N (16. Sep 2021)

Guten Tag,
ich wollte mal folgendes nachfragen. Wie genau läuft das bei folgendem Script ab.
Unten wird die Funktion test mit Übergabeparameter b aufgerufen.
Kann man sich die Übergabe dann wie folgt vorstellen?

function test(parameter=b)
{
parameter="Moin"
.
.
.
.}

B verändert sich dabei außerhalb der Funktion nicht und wenn b ein Array/Object wäre, dann würde das ebenfalls den Wert von parameter annehmenoder?

[CODE lang="java" title="Beispiel"]<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta charset="UTF-8" />
        <title>Internes JS</title>

        <script type="text/javascript">//<![CDATA[
        "use strict"
        var a,b="Moin";
        function test(parameter)
        {
        b="ist egal";
        parameter=parameter+" ! Wie gehts?";
        return parameter;
        }
        a=test(b);
        alert(b)
        //]]></script>
    </head>

    <body>

    </body>
</html>[/CODE]


----------



## N3WM4N (16. Sep 2021)

und angenommen ich rufe einfach eine Funktion wie folgt auf und packe da ein paar Literale rein testfun(10, 30)
Was kann man dann damit machen. Die sind ja nicht als Variablen deklariert. Wie kann man dann damit arbeiten


----------



## Jw456 (16. Sep 2021)

JavaScript hat die  primitiven  Datentypen Numerm, String, Boolean
Primitive Datentypen werden als Kopie an Funktionen übergeben.
In der Funktion wird mit der Kopie der Variablen gearbeitet.


Bei Objekten wird die Referenz der Objekte übergeben. Also ein Zeiger auf den Speicherplatz im Ram.
Arrays sind Objekte.


----------



## mihe7 (16. Sep 2021)

N3WM4N hat gesagt.:


> und angenommen ich rufe einfach eine Funktion wie folgt auf und packe da ein paar Literale rein testfun(10, 30)
> Was kann man dann damit machen. Die sind ja nicht als Variablen deklariert. Wie kann man dann damit arbeiten


In JavaScript sind Funktionsparameter syntaktischer Zucker, der einem das Leben vereinfacht. Tatsächlich kannst Du eine Funktion mit beliebigen, auch nicht deklarierten, Parametern aufrufen. Zugreifen kannst Du via `arguments`:

```
function hello() {
    if (arguments[0] === undefined) {
        window.alert("Was darfs sein, Fremder?");
    } else {
        window.alert("Was willst Du, " + arguments[0] + "?");
    }
}
```
Wenn Du jetzt `hello()` aufrufst, wird der Fremde gefragt, bei `hello("Hans")` dagegen der Hans. Das arguments-Objekt besitzt auch die Eigenschaft length, mit der sich die Zahl der übergebenen Argumente ermitteln lässt. Ich hätte oben also auch prüfen können, ob `arguments.length === 0` gilt. 

Gibst Du der Funktion nun einen Parameter, z. B. `name`, kannst Du sowohl via `name` als auch über `arguments[0]` auf das übergebene Argument zugreifen.


----------

