# Funktionsaufruf Verständnis



## N3WM4N (6. Sep 2021)

Guten Tag,
ich habe leider ein paar Verständnis Probleme bezüglich der Abläufe der Funktionen.
Im ersten Script wird die Funktion umwand_1(c) aufgerufen. p1 wird dann in der Funktion durch c ersetzt oder?
c ist dann 569 und b bleibt -69;
Jetzt analog dazu wieso wird im zweiten Script dann a verändert? Nach dem Vorgehen aus dem
ersten Skript müsste beim zweiten a ja auch unverändert bleiben. Dies ist aber nicht der Fall.
Ich glaubve ich habe noch ein Verständnis Problem bei Funktionen mit Übergabeparametern.
Vielleicht könnt ihr mir kurz weiterhelfen

[CODE lang="javascript" title="Script 1/Frage1"]<script type="text/javascript"> //<![CDATA[
    var b,c=-69;
    function umwand_1(p1)
    {
        p1=569;
        return p1;
   }
b=umwand_1(c)
//]]>
</script>[/CODE]

[CODE lang="java" title="Script 2"]<script type="text/javascript"> //<![CDATA[
    var c,i,a=[9,8,7,6,5,4];
    function umwand_5(p1)
    {
    for(i=0; i<p1.length;i++)
    {
    p1_=p1-1;
    return p1;
    }
}
c=umwand_5(a);


    //]]>
</script>[/CODE]_


----------



## Oneixee5 (6. Sep 2021)

Hier wird das erklärt: https://developer.mozilla.org/de/docs/Web/JavaScript/Guide/Functions


----------



## N3WM4N (6. Sep 2021)

Also ich hab das jetzt wie folgt verstanden.
Leider habe ich das Thema Objekte noch nicht gehabt.
Also wenn es sich beim Datentyp um ein Objekt handelt, dann wird der Wert auch global verändert.
Und wenn es sich nicht um Objekte handelt, dann wir der Wert nur innerhalb der Funktion geändert also lokal.
Also gehören Arrays zu den Objekten?
Hab ich das jetzt so richtig verstanden.
Vielleicht kannst du ja nochmal kurz Feedback geben


----------



## Oneixee5 (6. Sep 2021)

N3WM4N hat gesagt.:


> , dann wird der Wert auch global verändert.


... ist etwas zu 'global' ausgedrückt. Die Änderungen am Objekt sind auch außerhalb der Funktion sichtbar, es muss sich dabei nicht zwingend um ein globales Objekt handeln.


----------



## Jw456 (6. Sep 2021)

Ja Array ist als Objekt zu verstehen und da wird eine Kopie der Reverenz auf das Objekt übergeben. Somit ist es möglich  in der methode die Werte zu ändern.

Bei den anderen Variablen ist es eine
 primitive variable zb int. Da wird eine Kopie von der intager Variablen übergeben.


----------



## Mart (6. Sep 2021)

du stößt im moment auf call by value sachen
JSON => javascript object notation
referenzen
Objekte ansich => sachen die aus bauplänen gebaut wurden
methoden => sachen die die gebauten sachen können, zusätzlich zu den attributen

das alles zu erklären ist der job eines tutorials


----------

