JavaScript’te “Strict Mode” Kullanımı

Bu yazımızda, JavaScript’te “Strict Mode” kavramının ne olduğunu, nasıl kullanıldığını ve bu modun kodunuzu nasıl daha güvenli ve optimize edilmiş hale getirebileceğini detaylıca inceleyeceğiz.

“Strict Mode” Nedir?

Strict mode” (katı mod), dilin daha kesin bir alt kümesini kullanarak kodun daha güvenli ve optimize bir şekilde yazımasını sağlar.

ES5 (ECMAScript 5) ile tanıtılan bu özellik, JavaScript dosyasında veya fonksiyon içinde “use strict”; ifadesi eklenerek etkinleştirilir. “Strict Mode”, bazı potansiyel hatalara ve yanıltıcı davranışlara sebep olabilecek eski JavaScript özelliklerini devre dışı bırakır. Aynı zamanda, bazı hataların daha açıkça raporlanmasını sağlar.

use strict;” komutu ile etkinleştirdiğimiz bu yapı, yazılan kodların daha katı bir kontrol mekanizması tarafından denetlenmesini sağlar. Bu sayede, normalde yapılabilen birtakım şeylerin önüne geçilir ve bu da daha güvenli bir kod yazımını mecburi kılar.

“Peki, use strict; komutu neleri önler?” Bu soruya adım adım cevap verelim.

1. Hataları önlemek: Normal modda, bir değişkene atanmadan önce tanımlanmazsa (beyan edilmezse), bu değişken otomatik olarak global bir değişken haline gelir. Eğer "strict mode"; aktifse ve herhangi bir değişken var, let, const gibi anahtar kelimelerle tanımlamadan kullannılırsa hataya neden olur.

// normal mod
function myFunction() {
  carName = "Volvo";
}
myFunction();
console.log(carName); // "Volvo"
// strict mode
"use strict";
function myFunction() {
  carName = "Volvo"; // ReferenceError: carName is not defined 
}
myFunction();
console.log(carName);

2. Geçmişe dönük uyumluluk ve gelecekteki sözdizimini engelleme: Katı mod, geçmişe dönük uyumlu olmayan veya gelecekteki sözdizim hatalarını önlemek için bazı kelimelerin kullanımını yasaklar.

Gelecekte dilin bir parçası olabilecek bazı anahtar kelimelerin (örneğin, implements, interface, let, package, private, protected, public, static ve yield) şimdiden kullanılmasını engeller. Örneğin, let ve const ECMAScript 6 ile birlikte tanıtılan anahtar kelimelerdir ve use strict; bu kelimelerin normal değişken adları olarak kullanılmasına izin vermez:

"use strict";
let let = 10; 
// SyntaxError: Unexpected strict mode reserved word

3. this için undefined değeri: Katı mod, bağımsız bir fonksiyonun this‘inin global nesneye (window) referans vermesini önler. Bunun yerine, bağımsız bir fonksiyonun this‘i undefined‘a referans verir:

//normal mod
function myFunction() {
  console.log(this); // window object (global object)
}
myFunction();
// strict mode
"use strict";
function myFunction() {
  console.log(this); // "undefined"
}
myFunction();

4. Duplicated parameters: Katı mod, aynı isimde birden fazla parametre belirtmemizi engeller. Bu, normal modda izin verilir bir şey ve genellikle hatalara yol açar:

"use strict";
function myFunction(a, a) { // Uncaught SyntaxError: Duplicate parameter name not allowed in this context
  return a + a;
}

5. Delete operatörünün yanlış kullanımını engelleme: Katı mod, değişkenlerin, fonksiyonların veya fonksiyon parametrelerinin silinmesini engeller. Normalde, delete operatörünün yanlış kullanılması bir hata oluşturmaz, ancak "strict mode"; bu tür kullanımları hata olarak işler:

"use strict";
let x = 3.14;
delete x;  // SyntaxError: Delete of an unqualified identifier in strict mode.
function x(p1, p2) {};
delete x;  // SyntaxError: Delete of an unqualified identifier in strict mode.

6. Octal literal’ların (Sekizlik Sayıların) kullanımını engelleme: JavaScript’in erken versiyonlarında, sekizlik (octal) sayılar 0’la başlar. İstenmeyen hataları önlemek adına, bu tür octal literal’ların kullanımını engellenir ve hata oluşturulur:

"use strict";
let x = 010;  // SyntaxError: Octal literals are not allowed in strict mode. 

Bu özellikler, strict mode’un neden modern JavaScript uygulamalarında kullanıldığını gösterir. Bu nedenle, yeni bir projeye başlarken “strict mode”u aktif etmek genellikle iyi bir uygulama olarak kabul edilir.

Ayrıca tekrar belirtmek isterim ki, "use strict"; ifadesini JavaScript’te global olarak bir dosyanın başında kullanabileceğiniz gibi, sadece belirli bir fonksiyon içinde de kullanabilirsiniz. Fonksiyon içinde kullanıldığında, sadece o fonksiyonun kapsamında “Strict Mode” aktif olur. Örneğin, aşağıdaki gibi bir kod yazabiliriz:

function myFunction() {
  "use strict";
  // Strict Mode içinde kod
  var v = "Hello World"; // 'var' kullanılmadan bir değişken tanımlarsanız hata alırsınız.
}
// Bu kısımda Strict Mode aktif değil
var x = 10;

Bu tür bir kullanım, tüm kodunuzda “Strict Mode”u etkinleştirmek istemediğinizde, ancak belirli fonksiyonlarda bu modun avantajlarından yararlanmak istediğinizde faydalıdır. Bu, özellikle eski bir kod tabanını güncellerken ve sadece belirli kısımlarda “Strict Mode”u etkinleştirmek istediğinizde kullanışlı olabilir.

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu