Javascript Use Strict Nedir ?

Bu yazımızda Javascript dilinde use strict nedir, ne işe yarar gibi sorulara cevap aramaya çalışacağız.

Katı mod olarak da bilinen use strict kod yazarken belli kurallara uymamızı şart koşan bir bildiridir aslında.

use strict Kullanımı

Use strict hayatımıza Ecmascript 5 versiyonu ile girmiştir. Use strict'in kullanım amacı kodların katı modda yürütülmesini sağlamaktadır. Bir önceki yazımızda hoisting kullanımından bahsetmiştik. Hoisting kullanırken değişkeni kullandıktan sonra çağırabiliyorduk. Use strict'te ise böyle bir şey söz konusu değildir. Javascript bildiğiniz gibi can sıkıcı derecede esnek olan bir dildir. Bu da bazen ciddi hatalara sebep olabilmekte. Use strict kullanarak kodlarımızın daha düzenli ve kurallara uygun bir şekilde yazılması için bir adım atmış oluruz aslında.

Mesela use strict kullandığımız zaman tanımlanmamış bir değişkeni kullanamayız.

Modern tüm tarayıcılar use strict kullanımını desteklemektedir. Tabii ki internet explorer 9 hariç :)

Katı Mod Tanımlama

Katı modda çalışmasını istediğimiz kodun ya da sayfanın başına "use strict;" yazarsak kodlarımız katı modda okunur hale gelecektir.

Dosyanın başında tanımlanan katı mod global olacaktır ve tüm dosyada etkili olacaktır.

Örnek :

<script>
"use strict";
x = 3.14// Kod çalıştığında konsol ekranında x tanımlı değil hatası yazacaktır.
<script>

Fonksiyon örneği:

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

function deneme() {
  y = 3.14;   // y tanımlı olmayan bir değişken olduğu için hata verecektir.
}
</script>

Sadece Belli Bir Kısımda Katı Mod Uygulamak

Katı mod local scope içinde de kullanılabilir. Mesela sadece bir fonksiyonun içerisinde katı mod kullanmak istiyoruz. O zaman şöyle yapabiliriz.

kodla = 3.14;       // Çalışır
deneme();

function deneme() {
  "use strict";
  y = 3.14;   // Hata verir
}

Neden Katı Mod Kullanırız ?

- Katı mod, kod güvenli bir şekilde Javascript yazmamıza imkan sağlar.

- Önceki sürümlerde hataya yol açmayan kötü söz dizimi kullanımlarını gerçek bir hataya çevirir.

- Mesela normal javascript'te bir değişkenin adını yanlış yazarsak yeni bir global değişken oluşturur. Ve bu bir hatadır ama use strict kullanmazsak bu hata es geçilir. Ama katı mod kullanırsak bu oluşuma izin vermez ve hatalı yazdığımızı bize bildirir.

- Tanımlanmamış değişkenlere değer atamamıza izin vermez.

Katı Modun İzin Vermediği Olaylar

Bir değişkeni tanımlamadan kullanmaya çalıştığımızda hata erir.

<script>
use strict;
x = 14; // x değişkeni tanımlı değil hatası verecektir.
</script>

** Nesnelerin de değişken olduğunu unutmayalım !

Bir değişkeni veya nesneyi silmemize izin vermez.

<script>
"use strict";
var x = 55;
delete x;  // hata verir.
</script>

Bir fonksiyonun silinmesine izin vermez.

<script>
"use strict";
function topla(p1, p2) {};
delete topla;   
</script>

Fonksiyona birden fazla aynı parametre adı girilmesine izin vermez.

<script>
"use strict";
function cikar(p1, p1) {}; // hatalı kullanım
</script>

8 tabanlı sayıların kullanımına izin vermez.

<script>
"use strict";
var x = 045;   // hata verir
</script>

8 tabanlı kaçış karakterlerine izin vermez.

<script>
"use strict";
var x = "\010"</script>

Salt okunur bir nesneye yazmamıza izin vermez.

<script>
"use strict";
var nesne= {};
Object.defineProperty(obj, "x", {value:0, writable:false});

nesne.x = 3.14;   
</script>

Nesne içerisinde belli bir geri dönüşü olan fonksiyona yazmaya izin vermez.

<script>
"use strict";
var obj = {get x() {return 0} };

obj.x = 3.14;   // hata verir
</script>

Javascript dilinde kendinden tanımlı özelliklerin silinmesine izin vermez.

<script>
"use strict";
delete Object.prototype;//hata verir
</script>

Eval kelimesinin değişken olarak kullanılmasına izin vermez.

<script>
"use strict";
var eval = "kodlamak";   // hata verir.
</script>

arguments kelimesinin değişken olarak kullanılmasına izin vermez.

<script>
"use strict";
var arguments = 3.14;  //hata verir
</script>

With kelimesinin kullanımına izin vermez.

<script>
"use strict";
with (Math){x = cos(2)}; // hata verir.
</script>

Güvenlik nedeniyle eval() fonksiyonu içinde değişken tanımlamaya izin vermez.

<script>
"use strict";
eval ("var x = 2");
alert (x);  
</script>

Fonksiyonlardaki this anahtar sözcüğü katı modda farklı davranır. This anahtar sözcüğü, fonksiyonu çağıran nesneyi ifade eder. Nesne belirtilmezse, katı moddaki işlevler tanımsız döndürür ve normal moddaki işlevler genel nesneyi (pencere) döndürür:

<script>
"use strict";
function myFunction() {
  alert(this); // undefined hatası verir.
}
myFunction();
</script>


YAZAR HAKKINDA

26 Yaşında. Araştırmayı seven, bir şeyler öğretmeye meraklı bir Bilgisayar Mühendisi

0 YORUM

Bu konuya henüz yorum yapılmamış

Yorum Yap

@COPYRIGHT KodlamakLazım Tüm Hakları Saklıdır.