# 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 %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://hanuce.gitbook.io/javascript-egitimi/kati-mod-kullanimi.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
