> 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.md).

# Fonksiyonlar (Temel)

Programlama dilinde fonksiyonlar belirli bir işlemi yerine getiren kod birimidir. Yapmak istediğimiz işlemleri **`function`** bloğu içinde ifade ederek oluştururuz.

* Fonksiyonlar bir yazılımın yapıtaşlarını oluşturur.
* Hemen hemen her görev fonksiyonlarla yazılır.
* Fonksiyonlar programımızı modüler hale getirmeye yarar.
* Programımızı fonksiyonlarla parçalar halinde yazmak okunurluk, sonradan bakım yapma, performans açısından çok kıymetlidir.

## Fonksiyon Tanımlama ve Çağırma

Bir fonksiyon **`function`** deyimi ile **tanımlanır**. Her fonksiyonun bir ismi vardır. Fonksiyonları bu isim ile **çağırarak** çalıştırırız. Örnek.

{% code lineNumbers="true" %}

```javascript
function selamVer () { //fonksiyon tanımlama ve isim verme
    //Kod gövdesi
    alert('Merhaba Fonksiyonlar');
}
selamVer(); // Fonksiyonu çalışması için çağırdık.
```

{% endcode %}

En yalın haliyle bir fonksiyon bu şekilde yazılır. Bir fonksiyonun çağırdığınız satırdan önce yazılmış olmasına gerek yoktur. Aynı kapsamda tanımlanmış olması yeterlidir. Örnek.

{% code lineNumbers="true" %}

```javascript
selamVer(); // aynı kapsamda herhangi bir yerden çağrıabilir.
function selamVer () { //fonksiyon tanımlama ve isim verme
    //Kod gövdesi
    alert('Merhaba Fonksiyonlar');
}
```

{% endcode %}

Global kapsamda bildirilen değişkenler (global değişken) fonksiyon kapsamın içinde doğrudan kullanılabilirler. Fakat fonksiyon içinde bildirilen değişkenler (yerel değişken) fonksiyon kapsamın dışında kullanılamazlar. Örnek.

{% code lineNumbers="true" %}

```javascript
let ders = 'Fonksiyonlar';
function selamVer () {
    alert('Merhaba ' + ders );
    let yerelDegisken = 'Merhaba JavaScript';
}
selamVer(); // fonksiyonu çağırdık
alert(yerelDegisken); // hata verir.
```

{% endcode %}

Bu yapı global değişkenlerin fonksiyon içinden manipüle edilmesine de olanak sağlar. Örnek.

{% code lineNumbers="true" %}

```javascript
let ders = 'Global Değişken';
function degerDegistir() {
    ders = 'Yerel Değişken';
}
degerDegistir(); // ders değişkenini değişmesi için degistir fonk. çağırdık.
alert(ders); // global değişken yerelden değişti: 'Yerel Değişken';
```

{% endcode %}

Bu kullanım global değişkenin değerini değiştirdiği için sıkıntılara yol açabilir. Bu sebeple fonksiyon içinde kullanılacak değerler **parametre** ile içeri alınır.

##

##

##

##
