Photo by Aleksander Naug on Unsplash

Javascript’in Tarihçesi

Neden? var → let, const

Javascript var değişkenden neden let,const kullanımına yöneldik ?

Frontend Development With JS
3 min readOct 29, 2019

--

Giriş

Bu yazıyı daha önceden yazmış olduğum Javascript’in Tarihçesi yazısının bir devamı olarak yazıyorum. Bir çok kavramı tek bir yazıda ele almanın yaratacağı karmaşıklıktan kaçmak için bu şekilde bir yönteme başvurdum. Bu yazılardaki amacım önceden Javascript’in varolan hangi özelliklerinin yetmediğini ve bu geliştirmeyle neyi hedeflediklerini anlatacağım.

Kısa bir dip not olarak şunuda belirteyim ki, aslında bu konu teknik olarak çok daha derin bir konu Scoping, LHS/RHS, Hoisting, Lexical Scoping, Pure Functions, IIFE, Types, Immutable, Pass By Reference vb konuları içeriyor. Ben burada işleri çok karıştırdığı için sadece işlevsel olarak amacından bahsedeceğim teknik derinliklere pek inmeyeceğim.

Özetle aşağıdaki kapsamları anlatmaya çalışacağım.

  • no var → Global Scope
  • var → Function Scope
  • let/const → Block Scope

var Değişkenini Ne İçin Kullanıyoruz ?

var yani değişkenin( variable) kısaltmasıdır. Yazılım içerisinde isimler, metinler, sayılar, tarihleri tutmak için bu değişkenleri kullanıp bunlar üzerinde işlem yaparız.

var name="Onur";  var height=180;  var age;

Peki aşağıda belirttiğimiz gibi hiç kullanmasaydık ne olurdu. Öncelikle tek başına age; tanımlaması yapamazsınız. JS bunu bir atama(assignment) olarak algılaması lazım ki işlem yapsın. JS diğerleri için (name, height) için global scope içerisinde name isimli bir değişken oluşturup atama yapacaktır.

name="Onur";  height=180;  age; 

Peki o zaman neden variable kullanalım ki ? Olay ne zaman ki fonksiyon kullanmaya geldiğinde geliştiriciler olarak fonksiyon içerisindeki değerlerinin dışarıdan erişilmesini istemezler. Sadece o fonksiyon seviyesinde işlem görsün ister. Aşağıdaki örnekte solda var değişkeni kullanılmadığı için fonksiyonun dışındada kullanılabilen bir foo değişkeni görüyoruz.

var kullanmanın farkı

Ama biz geliştiricilerin her zaman istediğimiz şey tanımladığımız değişkenlerin tanımladığımız kapsam(scope) içerisinde yaşasın, görülsün ve erişebilsin şeklindedir. Bunun haricindeki erişimler kod miktarı büyüdükçe kontrol edilemez hale gelip o değişkenin nerden değiştirildiği bilinemez hale gelir.

Bir diğer önemli kuralda üst kapsam(scope) tanımlanan bir değişkene alt kapsamdakiler erişebilir ve kullanabilirler. Bu zaten istenen bir durumdur.

Üst scope tanımlanan değişken

let/const Değişkenini Ne İçin Kullanıyoruz ?

Geldiğimiz noktada function scope bize yetiyordu. Sadece for/while, if/switch gibi scope tanımlamalarında kullanılıyor ve fonksiyonlar daha basitti. Fakat async/promise, arrow function, callback ile iç içe block şeklindeki kod yazma ihtiyacımız arttıkça fonksiyon içerisindeki var bize yetmemeye başladı.

Sol tarafta var değişkeni ile tanımladığımız en iç scope olmasına ragmen en üstteki kapsamda kullanılabilmektedir. Bunun yerine istediğimiz sağ taraftaki gibi iç scope değişkenin dışarıdan erişilememesidir.

İç içe scope tanımlama

const ise bir değişkene ilk atamayı yaptıktan sonra herhangi bir atama yapmanızı engeller. Bu sayede bir PI sabiti tanımladıktan sonra birisi bunu değiştirmek isterse JS bunun için hata verir.

Kod Örnekleri

Okumaya Devam Et 😃

Bu yazının devamı veya yazı grubundaki diğer yazılara erişmek için bu linke tıklayabilirsiniz.

--

--