> For the complete documentation index, see [llms.txt](https://hanuce.gitbook.io/javascript-egitimi/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hanuce.gitbook.io/javascript-egitimi/fonksiyonlar-temel/parametreli-fonksiyonlar.md).

# Parametreli Fonksiyonlar

**Parametre**; fonksiyon **tanımlanırken** girdi olarak **alınan** öğelerdir.

**Argüman**; fonksiyon **çağrılırken gönderilen** öğelerdir. Argüman olarak verilen öğenin kendisi işleme alınmaz, değerinin bir kopyası işleme alınır. Parametreli bir fonksiyon **tanımlayalım** ve argüman vererek fonksiyonu **çağıralım**.&#x20;

Örnek.

{% code lineNumbers="true" %}

```javascript
let ders = 'Argüman';
function parametreGoster(para1) { //'para1' bir parametredir.
    alert(para1); //para1'in değeri gönderilen argümanın değeridir.
    para1 = 'Parametre';
    alert(para1); //parametrenin değeri değişir.
}
parametreGoster(ders); // 'ders' değişkenini fonksiyona argüman yaptık.
alert(ders); //gönderilen argümanın esas değeri işlemlerden etkilenmez.
```

{% endcode %}

Argüman olarak gönderilen öğenin bir kopyası fonksiyon içinde kullanılır bu sebeple üst kapsamdaki öğenin değeri değişmez.

Parametreler için varsayılan değerler verilebilir. Örnek.

{% code lineNumbers="true" %}

```javascript
let arg1, arg2; // değeri undefined olan iki değişken
parametreGoster(arg1, arg2); // arg1 = kapsam, arg2 = ders

function parametreGoster(kapsam = 'Yerel Kapsam: ', ders = 'Fonksiyonlar') {
    alert(kapsam + ders);
}
```

{% endcode %}

Argümanlar gönderildikleri sıra ile parametrelerle eşleştirilirler. Bu sebeple argümanları parametrelere **uygun sırada vermeye dikkat ediniz.** Örnek.

{% code lineNumbers="true" %}

```javascript
let arg1 = 'Global Kapsam: ', arg2 = 'Parametreler ';
parametreGoster(arg2, arg1); // arg2 = kapsam, arg1 = ders

function parametreGoster(kapsam = 'Yerel Kapsam: ', ders = 'Fonksiyonlar') {
    alert(kapsam + ders);
}
```

{% endcode %}

Parametre ile tanımlanan bir fonksiyona argüman göndermezsek ne olur? Deneyelim.

{% code lineNumbers="true" %}

```javascript
degistir(); // argümansız çağırdık.
function parametreGoster(para1, para2) {
    alert(para1 + ' ' + para2);
}
```

{% endcode %}

Yine çalışır. Bizler şimdiye kadar birçok çıktıyı elde etmek için fonksiyon içinde **`alert();`** kullandık. Peki bir fonksiyonu **`alert();`** fonksiyonuna argüman olarak göndersek ? Deneyelim.

{% code lineNumbers="true" %}

```javascript
function foo () {
    let mesaj = 'Fonksiyon';
}
alert( foo() ); //undefined çıktısı verir.
```

{% endcode %}

Sonuç **`undefined`** olduğuna göre demek ki fonksiyonlar bir değer döndürebilir. Fonksiyon bitiminde **`return`** ifadesi ile bu değeri kontrol edebiliriz.
