Javascript Use Strict Kullanımı
Hepinize merhaba dostlarım 😊. Bu yazımda sizlere Javascript programlama dili üzerinde bizim daha düzenli yani kurallara uygun olarak kod yazmamızı sağlayan bir yapı olan "use strict" yapısından yani "Katı Mod" kullanımından bahsedeceğim. İlk duyan dostlarım olabilir anlıyorum çünkü genelde çok sık kullanılan bir yapı değildir ben pek karşılaşmadım. Ama bilmemizde fayda var 😊. Heyecanınızın arttığını artmaya başladığını seziyorum dostlarım 😊. O halde öncelikle "use strict" nedir bunun tanımını yaparak konumuza girişimizi yapalım
USE STRICT (KATI MOD) NEDİR ?
Gelelim dostlarım artık Use Strict nedir ne değildir bunu bir inceleyelim 😊. Use Strict yani Türkçe karşılığı Katı Mod olan bu yapı bizim javacript ile çalışırken, kodlama yaparken belirli bir kural çerçevesi içerisinde kod yazmamızı sağlar. Örnek vermemiz gerekirse dostlarım Javascript üzerindeki Hoisting konumuzda (okumayan dostlarım varsa buradan ulaşabilir) değişken oluşturmadan kullanıp daha sonra bu değişkeni oluşturabiliyorduk 😊. Ama Katı Mod kullandığımızda ise bize
Kardeşim benim kurallarım var bu kurallar çerçevesinde kod yazarsan sevinirim 😊
şeklinde uyarı verdiriliyor 😊. Bütün işlemlerimiz aslında bu kadar dostlarım 😊. Bu kısma kadar anlamış iseniz artık yavaştan yavaştan Katı Mod ' un kullanım kısmına geçelim 😊
USE STRICT (KATI MOD) KULLANIMI
Eveeeet dostlarım 😊. Artık Katı Mod un tanımını yaptığımıza göre artık programlama üzerinde nasıl bir kullanım yapıldığına geçelim 😉. Bunun için örnek olarak bir html dosyası oluşturabilirsiniz 😊. Sonrasında ise içerisine gelip
<script>
"use strict"
</script>
şeklinde kodumuzu yazalım. Burada biz programa diyoruz ki: "Bu projede yazılacak tüm kodlamalar katı mod çerçevesi içerisinde yazılacak 😊." şeklinde bir komut veriliyor 😊. Ufak bir örnek yapalım mesela
<script>
"use strict"
numara = 692; // BU KISIMDA HATA VERECEK
</script>
şeklinde kodumuzu yazıp çalıştırdığımızda karşımıza
Uncaught ReferenceError: numara is not defined
şeklinde bir hata yani "Numara isimli bir değişken bulunamadı" şeklinde bir hata verecektir. Oysaki biz bunu hoisting yapısı ile çok rahat bir şekilde yapabiliyoruz 😊. Bu kısma kadar kullandığımız Katı Mod' un Global bir kullanımıydı 😊. Şimdi gelelim Yerel kullanım nasıldır yani belirli bir alanda bu kodu nasıl uygulayabiliriz onu inceleyelim. Hemen kodlama sayfamızı açalım ve
<script>
var name = "MFSoftware Blog";
alert(name); // Ekrana MFSoftware Blog yazar
function selamla(){
"use strict"
message = "Hoş Geldiniz"; // HATA VERİR
alert(message);
}
selamla();
</script>
şeklinde kodlarımızı yazdık dostlarım. Ekran çıktısında ilk olarak "MFSoftware Blog" yazar. Daha sonra biz aşağıda fonksiyonu çalıştırdığımız için fonksiyon içerisine girer ve katı modu uygulamaya başlar 😊. message değişkenini tanımlamadan kullanmaya çalıştığımız ekranımıza
Uncaught ReferenceError: message is not defined
şeklinde kullanım çıkar 😊. İşte bütün işlemler bu kadar basit dostlarım 😊. Lokal ve Global kullanımlarını bu şekilde görmüş olduk dostlarım 😊. Şimdi ise gelelim Katı Mod kullanımı sırasında izin verilmeyen olaylara 😊
USE STRICT (KATI MOD) NELERE İZİN VERMEZ ?
Geldik dostlarım artık katı mod kullanımının asıl kısmına 😊. Katı mod sadece Lokal ve Global olarak kalmıyor, diğer yerlerde de karşımıza çıkıyor 😊. Nedir bunlar diye merak ediyorsanız dostlarım bunları ufak ufak başlıklar içerisinde anlatacağım 😊. Kemerlerinizi bağladıysanız yavştan yavaştan uçuşa geçebiliriz 😊
DEĞİŞKEN TANIMLAMADAN KULLANAMAYIZ
Global ve Lokal değişkenler kısmında bunu canlı canlı görmüştük ama olsun tekrardan üzerinden geçmemizde bir sıkıntı olacağını düşünmüyorum 😊. Katı Mod kullanımında bir değişkeni var, let, const gibi ifadelerle tanımlamadan direkt olarak kullanmaya çalıştığımızda hata verir
<script>
"use strict"
my_site = "MFSoftware Blog"; // HATA VERECEKTİR
</script>
<!--
Hata Çıktısı : Uncaught ReferenceError: my_site is not defined
-->
DEĞİŞKEN SİLMEMİZDE BİZE ENGEL OLUR
Normalde programı yazarken belli bir yerde değişkeni oluşturup daha sonradan silme ihtiyacı duyarız 😊. Ancak bunu katı mod kullanarak yapmak istediğimizde hatayla karşılaşırız 😊
<script>
"use strict"
var ott = ["Zafer YILDIZ","Emrullah Tanıma","Muhammed Fatih BAĞCIVAN","Aylin DURAN"];
delete ott; // HATA VERİR
</script>
<!--
Hata Çıktısı: Uncaught SyntaxError: Delete of an unqualified identifier in strict mode.
-->
FONKSİYON SİLMEMİZDE DE BİZE ENGEL OLUR
Bir önceki başlığımızda değişkenleri silemeyeceğimizi gördük dostlarım 😊. Katı Mod sadece değişken silmemizde değil oluşturduğumuz fonksiyonu silmemizde de bize engel olur 😊.
<script>
"use strict"
function laptop(){
alert("Excalibur");
}
delete laptop; // HATA VERİR
</script>
<!--
Hata Çıktısı : Uncaught SyntaxError: Delete of an unqualified identifier in strict mode.
-->
FONKSİYONUN AYNI İSİMDE PARAMETRE ALMASINA İZİN VERMEZ
Oluşturduğumuz bir fonksiyonumuz olsun mesela 😊. Bu fonksiyonumuz da 3 parametre alsın diyelim 😊. Bu parametrelerin isimlerinin farklı olmaları gerek dostlarım 😊. Katı Mod ikisinin bile aynı olmasına izin vermez 😊
<script>
"use strict"
function araba(model,model,marka){ // HATA VERİR
}
</script>
<!--
Hata Çıktısı: Uncaught SyntaxError: Duplicate parameter name not allowed in this context
-->
8 TABANLI SAYILARI YAZAMAYIZ
Katı Mod kullanacağımızı javascript üzerinde belirttiğimizde bizim bir değişkenimizin içerisine dahi 8 tabanlı yazıların yazılmasına izin verilmez 😊. Hata verir yani "Kardeşim benim kurallarım böyle 8 lik yazma 😊" diye uyarı verir 😊
<script>
"use strict"
var nick = 0506; // HATA VERİR
</script>
<!--
Hata Çıktısı : Uncaught SyntaxError: Octal literals are not allowed in strict mode.
-->
8 TABANLI SAYILARDA KAÇIŞ KARAKTERİ KULLANAMAYIZ
8 tabanında sayılar zaten yazamıyorken 8 tabanlı sayı yazdığımızda ekstra olarak kaçış karakteri de eklediğimizde buna da göz yummuyor 😊. Gelin onu da inceleyelim
<script>
"use strict"
var nick = "\0506"; // HATA VERİR
</script>
<!--
Hata Çıktısı : Uncaught SyntaxError: Octal escape sequences are not allowed in strict mode.
-->
NESNE İÇERİSİNDEKİ GERİ DEĞER DÖNDÜREN FONKSİYONA DEĞER YAZILAMAZ
Örneğin bir nesne oluşturduk varsayalım dostlarım ve bu nesnemiz üzerinde bir geri değer döndüren fonksiyonumuz olsun (içerisinde return olan) 😊. Buna değer yazmaya çalıştığımızda bize hata verecektir. Kod burada bize :"Burası geri değer döndürüyor sen buna nasıl veri yazmayı düşünüyorsun 😅" der
<script>
"use strict"
var objemiz = {
get cagir() {
return "Ben Geri Dönüyorum Beyler";
}
};
objemiz.cagir = 692;
</script>
<!--
Hata Çıktısı: Uncaught TypeError: Cannot set property cagir of #<Object> which has only a getter
-->
JAVASCRIPT OBJELERİNİN SİLİNMESİNİ ENGELLER
Katı Mod kullanımında uygulanan en güzel kurallardan birisidir diyebilirim dostlarım 😊. Kullanıcının Javascript içerisindeki objelerin silinmesine asla izin verdirtmiyor 😊
<script>
"use strict"
delete Object.prototype; // HATA VERİR
</script>
<!--
Hata Çıktısı: Uncaught TypeError: Cannot delete property 'prototype' of function Object() { [native code] }
-->
EVAL İSMİNDE DEĞİŞKEN OLUŞTURMAYA MÜSAADE ETMEZ
Katı Mod özellikle değişken oluşturma işlemlerinde oluşturduğumuz değişkenlerin ismini bile kontrol eder 😊. Buradaki başlıktan da anlayacağımız üzere eval kullanımına müsaade etmiyor 😉. Çünkü eval javascript üzerinde bir fonksiyondur 😊
<script>
"use strict"
var eval = "Değişkenin içine değer aktar"; // HATA VERİR
</script>
<!--
Hata Çıktısı: Uncaught SyntaxError: Unexpected eval or arguments in strict mode
-->
ARGUMENTS İSMİNDE DEĞİŞKEN OLUŞTURMAYA MÜSAADE ETMEZ
Aynı bir önceki başlıkta olduğu gibi yani orada nasıl eval isminde değişken tanımlayamıyorsak ve bu eval aslında bir fonksiyon ise arguments isminde de değişken oluşturulmaya izin verilmiyor 😊. Bunun sebebi arguments aslında javascript üzerinde tanımlı olan bir obje dir 😊
<script>
"use strict"
var arguments = "Arguments değişkeni içine değer aktar"; // HATA VERİR
</script>
<!--
Hata Çıktısı : Uncaught SyntaxError: Unexpected eval or arguments in strict mode
-->
WITH KOMUTUNUN KULLANIMINA MÜSAADE YOKTUR
Özellikle katı mod kullanımın aktif edip proje yapıyorsak dostlarım burada with komutunun kullanımına use strict asla müsaade etmiyor 😉
<script>
"use strict"
with (String) { // HATA VERECEKTİR
isim = "Muhammed Fatih";
}
</script>
<!--
Hata Çıktısı : Uncaught SyntaxError: Strict mode code may not include a with statement
-->
EVAL FONKSİYONUNDA DEĞİŞKEN TANIMLANAMAZ
Katı Mod kullanımında karşımıza çıkan kurallardan birisi de eval fonksiyonunun içerisinde olası güvenlik zaafiyetlerinin önüne geçmek için değişken tanımlanma işleminin gerçekleştirilememesidir 😊. İşte bu da Katı Mod kullanımının bir yararıdır dostlarım 😊
<script>
"use strict"
eval ("var name = MFSoftware") // HATA VERİR
</script>
<!--
Hata Çıktısı: Uncaught ReferenceError: MFSoftware is not defined
-->
FONKSİYON İÇERİSİNDEKİ THIS ANAHTAR KELİMESİ UNDEFINED VERİR
Javascript programlama dilinde katı mod kullanmadan fonksiyon içerisinde this anahtar kelimesini kullandığımızda bize "Object Window" döndürdüğünü biliyoruz (javascript this kullanımı okumayan dostlarım için buraya link bıraktım) 😊. Ama bunu katı mod kullanarak yaptığımızda ekranımıza "undefined" uyarısı bastırılacaktır 😊
<script>
"use strict"
function deneme_this(){
alert(this); // undefined yazısını bastıracaktır ekrana
}
deneme_this();
</script>
Eveeeet dostlarım 😊. Bu yazımda sizlere javascript programlama dili üzerinde "use strict" yani "Katı Mod" nedir, nasıl kullanılır, kuralları nelerdir başlıklarını elimden geldiğince dilim döndüğümce anlatmaya çalıştım. Umarım faydalı olmuşumdur 😊. Eksik veya hatalı bir anlatım yapmışsam benimle iletişime geçmekten çekinmeyin 😊. Konu başlarda biraz karmaşık veya zor gelebilir dostlarım anlıyorum 😊. Bu aşamada her yazımın altında değindiğim gibi "İstikrarlı ve Azimli Olmalısınız, Bolca Pratik Yapmalısınız 😊". Bu dediklerimi hayat felsefeniz yaptığınız sürece başarı sizler için kaçınılmaz olacaktır 😊
Hayallerinizi gerçekleştirmeniz ve güzel yerlere gelmeniz dileklerimle... İyi çalışmalar dilerim 😊
Yazar Hakkında
Kendi Halinde Bir Backend Developer