> 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/kati-mod-kullanimi.md).

# Katı Mod Kullanımı

JavaScript varsayılan olarak ifadelerimizdeki semantik '***bazı hataları***' 'hata' olarak fırlatmaz, bunları tolere eder. ES5 ile 2009'da gelen yeniliklerden biri olan '***katı mod***'u kullandığımızda yazdığımız kodlardaki bu semantik hatalar tolere edilmez, kod yürütülmez ve hata olarak fırlatılır. Bu modun gelmesi ile birlikte eski mod 'özensiz mod (sloppy mode) - normal mod (normal mode)' yeni mod ise  'katı mod (strict mode)' olarak ifade edilmiştir.

JavaScript'i katı mod ile kullanmak için **`"use strict" ;`** ifadesini kullanırız.

'Normal Mod' ile 'Katı Mod' arasındaki farklardan birini şu şekilde örnekleyebiliriz.

{% code lineNumbers="true" %}

```javascript
// normal mod
dil = 'Javascript'; // hata vermez
alert(dil);
```

{% endcode %}

{% code lineNumbers="true" %}

```javascript
// katı mod
"use strict" ;
dil = 'Javascript'; // hata fırlatır
alert(dil);
```

{% endcode %}

Yukarıdaki ilk kod bloğu çalışır, ikincisi çalışmaz. Katı mod hataları fırlatır çünkü katı modda değişkeni deklare etmeden kullanmak hata fırlatır.

{% hint style="info" %}
*'Değişken' ve* '*Deklare Etme'* kavramlarını bir sonraki ders işleyeceğiz.
{% endhint %}

{% hint style="info" %}
İnternet tarayıcımızda F12 kısayol tuşu ile açılan 'Diğer araçlar -> Geliştirici araçları -> Console (Konsol)' menüsündeki ***konsol*** sekmesine kayıt (log) düşer ve bu şekilde orada bir çıktı görürüz. Örnekteki hata çıktısını konsoldan görüntüleyebilirsiniz.
{% endhint %}

JavaScript geriye dönük uyumlu olarak geliştirildiği için önceki betiklerin çalışması açısından katı mod varsayılan olarak çalışmaz, normal moda göre çalışan motor katı moda biz belirttiğimiz takdirde geçer.

Katı mod için yazdığımız ' **`"use strict";`** ' ifadesini **kesinlikle kodlarımızın ilk satırına yazmamız gerekir.** Aksi halde geçerli olmaz. Ayrıca katı modun ***bloklar (kapsamlar)*** içinde de geçerli olmasını istiyorsanız blokların da ilk satırında yazmalısınız.

{% code lineNumbers="true" %}

```javascript
let isim;
isim = 'Javascript' ;
"use strict" ; // yanlış kullanım.
alert(isim)

{
    let dil;
    dil = 'Javascript' ;
    "use strict" ; // yanlış kullanım
}
```

{% endcode %}

{% hint style="info" %}
***{ Her süslü parantez arası bir blok (kapsam) anlamına gelir. }***

Kapsamlar konusuna değişkenlerden sonra değineceğiz.
{% endhint %}

{% code lineNumbers="true" %}

```javascript
"use strict" ; // doğru kullanım.
let isim;
isim = 'Javascript' ;
alert(isim)

{
    "use strict" ; // doğru kullanım
    let dil;
    dil = 'Javascript' ;
}
```

{% endcode %}
