let ve const anahtar kelimeleri ECMAScript 2015 (ES2015) ile birlikte kullanılmaya başlandı. Bu yenilik ile Javascripte daha önce bulunmayan Block Scope değişkenler kavramı da geliştiricilerin çalışma ortamına dahil oldu. ES2015 yayınlanmadan önce Global Scope ve Function Scope olmak üzere sadece iki tip scope bulunuyordu. Şimdi isterseniz ilk önce Global Scope ve Function Scope nedir ve nasıl kullanıyoruz buna kısaca göz atalım.
Global Scope
Fonksiyon alanının dışında global olarak belirlenen değişkenler global bir kapsama alanına sahiptir. Yani global olarak belirlediğimiz herhangi bir değişkeni javascript programı içerisinde herhangi bir yerde çağırıp kullanabiliriz.
Function Scope
Fonksiyon alanının içinde yerel olarak belirlenen değişkenler yerel bir kapsama alanına sahiptir. Yani fonksiyon alanı içinde belirlediğimiz herhangi bir değişkeni sadece belirlediğimiz fonksiyonun içinde çağırıp kullanabiliriz.
Global ve yerel alanları kısaca tanımladıktan sonra, şimdi de Block alanı açıklayarak let ve const. anahtar kelimelerinin kullanımını anlatmaya çalışacağım. Daha iyi anlaşılması için örneklerde var , let ve const. kullanımını birlikte vermeye çalıştım. Ümit ediyorum ki okuyan herkes en iyi şekilde istifade eder.
Block Scope
En kısa ve yalın şekilde, süslü parantez { } içinde belirlenen alana verilen isim olarak tanımlayabiliriz.
Bu özellik gelmeden önce var anahtar kelimesi ile block içinde veya dışında tanımlanan değişkenlere her yerden erişebiliyorduk. Sürekli olarak bellekte varlıklarını devam ettirdikleri için, bellekte sorunlara sebep olabiliyordu. Bu da çok istenilen bir sonuç olmadığı için ES2015 ile birlikte let ve const. anahtar kelimeleri kullanılmaya başlandı.
let
let
anahtar kelimesi ile atanan değişken block alana sahiptir. Bir block {} içerisinde tanımlandığında block dışından erişim sağlanamaz.
let
anahtar kelimesi ile bir block içerisinde atanan değişkene block dışında yeniden atanan değer block içerisindeki değeri değiştirmez.
Ayrıca aynı scope veya aynı block içerisinde let değişkenine yeni atama yapamayız.
Ancak farklı scope ve block içerisinde yeniden atama yapabiliriz.
const
const
ile atanan değişkenler let
ile atanan değişkenler gibi hareket ederler.
Yalnız const
ile atananlara tekrar atama yapılamaz.
let ve const kullanımının faydaları
*Sürekli kullanılmayan değişkenlerin bellekte gereksiz yer kaplamalarını engeller.
**Yanlışlıkla sabit bir değeri değiştirmeyi veya farklı bir kapsama alanında bulunan fakat aynı adla belirlenen değişkenin güncellenmesini önler.
***Yazdığımız kodların daha güvenilir, düzenli ve daha kolay okunabilir olmalarını sağlar.
Tabi ki var, let ve const çok farklı kullanımlara sahiptir. Ancak yeni başlayanlar için yukarıda açıklamaya çalıştığım kullanım şekillerini anlamak ve uygulamak yeterli olacaktır. Daha fazla bilgi için aşağıda verdiğim kaynak linklerine başvurulabilir.
Kaynaklar:
https://medium.com/@tugrulbayrak/javascript-scope-65e86de65cff
https://medium.com/front-end-weekly/es6-cool-stuffs-var-let-and-const-in-depth-24512e593268
https://www.w3schools.com/js/js_let.asp
https://www.w3schools.com/js/js_es6.asp
https://developer.mozilla.org/en US/docs/Web/JavaScript/Reference/Statements/let
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const