JavaScript Use Strict

Yazılan kodların JavaScript standartlarına göre yorumlanması için kullanılan use strict nedir, neden kullanılır ne işe yarar ile ilgili bilgiler yer alıyor.

“use strict”; anahtar kelimesi JavaScript kodlarının katı kurallı yorumlanacağını belirtir.

use strict nedir?

JavaScript use strict anahtar kelimesi kullanım amacı kodun katı kurallı olarak çalıştırılacağını belirtir.

Katı kurallı kullanımda değişken oluşturulmadan kullanmaya izin verilmez.

use strict kullanımı

JavaScript kodlarının katı kurallı olarak yorumlanması için kod veya fonksiyon başına “use strict”; yazmak yeterli olacaktır.

Katı kural tanımı kod başına yazılırsa tüm kodlar katı kurallı olarak çalışacaktır.

<script>
  "use strict";
  a = 2;
  b = 3;
  c = a + b;
  alert(c);  // Değişken oluşturulmadan kullanıldığından hata verir.
</script>

veya

<script>
  "use strict";
  hesapla();

  function hesapla() {
     a = 2;
     b = 3;
     c = a + b;
     alert(c);  // Değişken oluşturulmadan kullanıldığından hata verir.
  }
</script>

Katı kural tanımı fonksiyon içerisinde yapılırsa sadece fonksiyon içini kapsar.

<script>
  m = 45;
  alert(m);
  hesapla();

  function hesapla() {
    "use strict";
     a = 2;
     b = 3;
     c = a + b;
     alert(c);  // Değişken oluşturulmadan kullanıldığından hata verir.
  }
</script>

Neden use strict

JavaScript katı kural tanımı güvenli kod yazmak için kullanılır.

Katı kural tanımı daha önceki hatalı kullanımın önüne geçer.

Örnek olarak JavaScript’te değişken adını yazarak bir değişken kullanabiliriz.

Ancak katı kural tanımı ile değişken oluşturmadan değişken kullanmak hata verecektir.

JavaScript’te nesne özelliği yazılamaz olan özelliklere değer ataması yapıldığında hata vermeyecektir.

Katı kural tanımında yazılamaz olan bir özelliğe, yalnızca okunabilen bir özelliğe, olmayan bir özelliğe, olmayan bir değişkene ve olmayan bir nesneye yapılan atamalar hata verecektir.

Değişken oluşturulmadan kullanmak hata verir.

<script>
  "use strict";
  a = 2;
  alert(a);  // Değişken oluşturulmadan kullanıldığından hata verir.
</script>

Nesne veri türü oluşturulmadan kullanmak hata verir.

<script>
  "use strict";
  a = {a1:10, a2:20};
  alert(a.a1);  // Değişken oluşturulmadan kullanıldığından hata verir.
</script>

Değişken ve nesnenin silinmesine izin verilmez.

<script>
  "use strict";
  var a = 2;
  delete a;  // Bir değişkeni silmek hata verir.
</script>

Fonksiyon silinmesine izin verilmez.

<script>
  "use strict";
  function a(a1, a2) {};
  delete a;  // Bir fonksiyonu silmek hata verir.
</script>

Fonksiyona aynı parametrenin iki defa yazılmasına izin verilmez.

<script>
  "use strict";
  function a(a1, a1) {};  // Aynı parametresi iki defa yazılmış hata verir.
</script>

Sekizli sayısal değerlere izin verilmez.

<script>
  "use strict";
  var a = 02;  // Sekizli sayısal değer tanımı hata verir.
  alert(a);
</script>

Kaçış karakterlerine izin verilmez.

<script>
  "use strict";
  var a = \010;  // Kaçık karakteri hata verir.
  alert(a);
</script>

Sadece okunabilir bir özelliğe değer atamaya izin verilmez.

<script>
  "use strict";
  var nesne = {};
  Object.defineProperty(nesne, "x", {value:1453, writable:false});
  nesne.x = 23;  // Sadece okunabilir hata verir.
  alert(nesne.x);
</script>

Sadece değer döndüren özelliğe değer atamaya izin verilmez.

<script>
  "use strict";
  var nesne = {get a() {return 0}};
  nesne.a = 23;  // Sadece değer döndürür hata verir.
  alert(nesne.a);
</script>

Silinemez bir özelliğin silinmesine izin verilmez.

<script>
  "use strict";
  delete Object.prototype; // Silinemez bir özellik hata verir.
</script>

Değişken ismi olarak eval kullanılmasına izin verilmez.

<script>
  "use strict";
  var eval = 1453; // Özel anahtar kelime hata verir.
</script>

Değişken ismi olarak arguments kullanılmasına izin verilmez.

<script>
  "use strict";
  var arguments = 1453; // Özel anahtar kelime hata verir.
</script>

JavaScript with kullanımına izin verilmez.

<script>
  "use strict";
  with (Math){a = cos(2)}; // Kullanımına izin verilmez hata verir.
</script>

JavaScript eval fonksiyonu ile oluşturulmuş değişkenlerin kullanımına izin verilmez.

<script>
  "use strict";
  eval("var x = 2");
  alert(x);  // Oluşturulmamış değişken hata verir.
</script>

Anahtar kelimeler

Katı kural tanımlanırsa özel JavaScript anahtar kelimelerin kullanımına izin verilmez.

  • implements
  • interface
  • let
  • package
  • private
  • protected
  • public
  • static
  • yield
<script>
  "use strict";
  var static = 45;  // Anahtar kelime kullanımı hata verir.
</script>

JavaScript Derslerine buradan ulaşabilirsiniz…

Hayırlı günler dilerim.

Yusuf SEZER

Yusuf SEZER

Computer Engineer who interested about web technologies, algorithms, artificial intelligence and embedded systems; constantly exploring new technologies.


Bunlara'da bakmalısın!