> 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/ilkel-primitive-veri-tipleri/undefined-tipi-ve-degeri.md).

# Undefined - Tipi ve Değeri

**`Undefined`** 'tanımlanmamış' demektir. Bir değişken değeri belirlenmeden tanımlanmışsa hem veri tipi hem de değeri **`undefined`** olarak bellekte yer tutar. Yani değeri atanmayan her değişken **`undefined`** tipinde ve değerindedir. **Esasında bir değerdir.** Tip kontrolü yapılırsa da **`undefined`** çıktısı alınır. Örnek.

{% code lineNumbers="true" %}

```javascript
let degisken;
alert(degisken); // undefined çıktısı
alert(typeof degisken); // undefined çıktısı
```

{% endcode %}

Bir değişkenin değeri **`undefined`** olarak belirlenebilir. Fakat anlamsızdır. Çünkü genellikle değeri belirlenmeyen değişkenlerin kontrolünü yapmak için kullanılır.

{% code lineNumbers="true" %}

```javascript
let degisken;
degisken = undefined;
alert(degisken); // undefined çıktısı
alert(typeof degisken); // undefined çıktısı
```

{% endcode %}

**`undefined`** değeri özel bir değerdir. Bir değişkenin değerini **`undefined`** olarak belirlemek yerine **`null`** olarak belirlemek daha yaygındır. &#x20;

## null Değeri

**`null`** değeri de özel bir değerdir. **`null`** 'boş' anlamına gelmektedir.&#x20;

{% code lineNumbers="true" %}

```javascript
let degisken = null;
alert(typeof degisken); // object çıktısı
```

{% endcode %}

**`null`** değeri de ilkel veri tipidir ama **`object`** veri tipi çıktısı verir. Fakat **`object`**'e erişim sağlanamaz. **`object`** veri tipini ilerleyen konularda işleyeceğiz.

{% hint style="info" %}
Ne zaman **`null`** değeri kullanmalıyım?

Bir değişkenin **`bir değeri referans etmesinin`** önemli olduğu durumlarda **`null`** değeri kullanılmalıdır. Çünkü **`null`** değeri değişkene **değerinin atandığını** ve 'boş' (null) değerde olduğunu referans eder.

**`undefined`** ise (boş bile olsa) **`bir değer referans etmez.`** Değişkene değer atanmadığının, sadece değişkenin deklare edildiğini ifade eder.
{% endhint %}
