JavaScript’te “Implied Globals” Kavramı

Bu yazımızda, JavaScript’in dinamik yapısından kaynaklanan ilginç konseptlerinden biri olan “implied globals” kavramını detaylıca inceleyeceğiz.

“Implied Globals” Nedir?

JavaScript’te “implied globals” kavramı, bir değişkenin doğrudan tanımlanmadığı halde bir fonksiyon içerisinde kullanılması durumunu ifade eder. “Automatically global” olarak da adlandırılan bu kavram Türkçede örtülü dönüşüm olarak adlandırılmaktadır.

Bu durum, bir değişkene değer atanırken var, let veya const anahtar kelimelerinden herhangi biri olmadan değer ataması yapılması durumunda oluşur.

Yani JavaScript’te bir değişkene doğrudan değer atanabilir. Eğer bu değişken önceden var, let veya const anahtar kelimeleriyle tanımlanmamışsa, JavaScript bu değişkeni otomatik olarak küresel değişken olarak kabul eder. Haliyle bu değişken fonksiyonun içinde veya dışında erişilebilir hale gelir. Örneğin:

Yukarıdaki örnekte, myFunction fonksiyonunun içerisinde myVar isimli bir değişken tanımlandı. Ancak bu değişken, var, let veya const anahtar kelimeleri kullanılmadan doğrudan tanımlandığı için myVar değişkeni otomatik olarak global kapsama alınmıştır. Yani myFunction fonksiyonu çağrıldığında, myVar değişkenine “Hello World” değeri atanır ve bu değer fonksiyon içinde ve dışında erişilebilir hale gelir.

Yukarıdaki örnekte, myVar adlı değişkenimizi doğrudan değer atayarak tanımladık. Ancak bu tanımlama sırasında herhangi bir var, let ya da const anahtar kelimesini kullanmadık. Bu durumda, JavaScript otomatik bir şekilde bu değişkeni global kapsamda tanımlar. Pratikte bu, en başında sanki “var myVar = undefined;” şeklinde bir tanımlama yapılmışçasına bir davranışı tetikler.

Hele de “strict mode” kullanılıyorsa, böylesi bir kullanım hata verecektir. Bakınız:

Bu kodda, “strict mode” aktif edildiğinde myVar değişkeninin doğrudan tanımlanması hataya neden olacaktır. Çünkü “strict mode”, değişkenleri tanımlarken bir anahtar kelimenin (örn. var, let veya const) kullanılmasını zorunlu kılar.

Bu yüzden, değişken tanımlarken “implied globals” oluşturacak durumlarından kaçınmalı ve mutlaka var – let – const anahtar kelimelerinden birisi kullanılmalıdır.

İlgili Makaleler

Bir yanıt yazın

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

Başa dön tuşu