JavaScript’in Gizli Yüzü: 15 Şaşırtıcı Özellik
JavaScript, web geliştirmenin olmazsa olmaz dillerinden biri olarak geniş çapta kullanılıyor. Ancak bu dilin, yeni başlayanları şaşırtabilecek birçok gizli özelliği ve tuhaflığı var. Bu makalede, JavaScript dünyasında size ilginç bakış açıları kazandıracak 15 şaşırtıcı özelliği ele alacağız. Hazır olun, zihninizdeki JavaScript anlayışınızı alt üst edeceğiz!
1. Sayılar ile Karşılaşma: NaN ve Infinity
JavaScript’te sayılarla çalışırken, NaN ve Infinity gibi özel değerlerle karşılaşabilirsiniz. NaN (Not a Number), matematiksel bir işlem sonucunda geçersiz bir sayı elde edildiğinde ortaya çıkar. Örneğin, “0/0” işleminin sonucu NaN’dir. Infinity ise sonsuzluğu temsil eder ve bir sayının sıfıra bölünmesi sonucunda elde edilebilir.
2. Karşılaştırma Operatörleri: == vs. ===
JavaScript’te iki değeri karşılaştırmak için kullanılan iki farklı operatör vardır: == (eşittir) ve === (kesin eşittir). == operatörü, değerleri karşılaştırdıktan önce tiplerini dönüştürürken, === operatörü tip dönüştürme yapmaz. Bu nedenle, “1 == “1” ” doğru, “1 === “1” ” ise yanlıştır.
3. Fonksiyon Kapsamı: Hoisting
JavaScript’te, fonksiyonlar ve değişkenler, kodun yürütülmesi sırasında tanımlandıkları yere değil, kodun en üstüne “hoisting” edilir. Bu, bir fonksiyonu veya değişkeni tanımlamadan önce kullanabileceğiniz anlamına gelir. Ancak, bu özellik bazı beklenmedik davranışlara yol açabilir. Örneğin, bir değişkeni önce tanımlamadan önce kullanırsanız, değeri “undefined” olacaktır.
4. Nesnelerin Gizli Yüzü: Prototype Chain
JavaScript’te nesneler, prototiplerin zincirine dayanan bir hiyerarşik yapıya sahiptir. Her nesnenin bir prototipi vardır ve bu prototipin de bir prototipi olabilir. Bu sayede, bir nesnede olmayan bir özellik, prototip zincirinde aranır. Örneğin, bir dizi üzerinde kullanılan “forEach” yöntemi, Array nesnesinin prototipinde tanımlanır.
5. Arayüzün Altında Yatan Gerçek: DOM
JavaScript’te web sayfaları ile etkileşim kurmak için DOM (Document Object Model) kullanılır. DOM, HTML belgesini bir nesne hiyerarşisi olarak temsil eder. Bu sayede, JavaScript ile HTML öğelerine erişebilir, özelliklerini değiştirebilir ve yeni öğeler ekleyebiliriz.
6. JavaScript’in Güçlü Yönü: Closure
Closure, JavaScript’te önemli bir konudur. Bir closure, bir fonksiyonun dış dünyadan bağımsız olarak, kapsayan fonksiyonun değişkenlerine erişebilme yeteneğidir. Bu sayede, fonksiyonlar kendi özel durumlarını koruyabilir ve daha esnek davranabilirler. Örneğin, closure’lar özel değişkenler oluşturmak, callback fonksiyonları tanımlamak ve anonim fonksiyonları kullanmak için kullanılır.
7. Array’lerin Gizli Yeteneği: map, filter ve reduce
JavaScript’te array’ler üzerinde işlem yapmak için kullanılan birçok yerleşik fonksiyon vardır. Bunlardan bazıları, map, filter ve reduce’tir. Map, array’in her bir elemanına belirli bir fonksiyon uygular ve yeni bir array oluşturur. Filter, belirli bir koşulu sağlayan elemanları içeren bir array döndürür. Reduce ise array’in tüm elemanlarını birleştirerek tek bir değer döndürür.
8. “this” anahtar sözcüğünün gizemleri
JavaScript’te “this” anahtar sözcüğü, fonksiyon çağrılış şekline bağlı olarak farklı değerler alabilir. Fonksiyon normal bir şekilde çağrılırsa, “this” global nesneye işaret eder. Bir nesnenin metodu olarak çağrılırsa, “this” o nesneye işaret eder. “this” ile ilgili daha detaylı bilgiler için fatihsoysal.com adresindeki yazıyı inceleyebilirsiniz.
9. Callback’ler ve Event Handling
JavaScript’te, fonksiyonları argüman olarak geçmek ve daha sonra bu fonksiyonları çağırmak için callback’ler kullanılır. Bu, asenkron işlemlerle çalışmak için kullanılır. Örneğin, bir düğmeye tıklandığında bir fonksiyonu çağırmak için event handling mekanizması callback’ler kullanır. Callback’ler, asenkron programlamada önemli bir rol oynar ve uygulamanın farklı parçalarını birbirine bağlamaya yardımcı olur.
10. Asenkron Programlama: Promises ve async/await
JavaScript’te, ağ istekleri gibi bazı işlemler zaman alıcı olabilir. Bu işlemleri işlemek için asenkron programlama kullanılır. Promises, asenkron işlemlerin sonucunu temsil eder ve işlem tamamlandığında bir değer veya hata döndürür. Async/await sözdizimi, asenkron işlemleri senkron kod gibi yazmamızı sağlar.
11. JavaScript’in Göz Alıcı Yüzü: AJAX
AJAX (Asynchronous JavaScript and XML), web sunucuları ile arka planda etkileşim kurmamızı sağlayan bir tekniktir. AJAX ile, sunucudan veri alabiliriz ve bu verileri web sayfamızda güncelleyebiliriz. Bu sayede, kullanıcıların web sayfalarını yeniden yüklemeden veri alıp güncellemesini sağlar.
12. Şaşırtıcı Bir Hata: ‘use strict’
‘use strict’ direktifi, JavaScript kodunun daha katı bir şekilde çalışmasını sağlar. Bu direktif, JavaScript’in bazı esnek özelliklerini devre dışı bırakır ve kodun daha güvenli ve hatasız olmasını sağlar.
13. JSON: Veri Değişiminin Anahtarı
JSON (JavaScript Object Notation), web uygulamaları arasında veri alışverişi için kullanılan popüler bir formattır. JSON, JavaScript nesneleri ile benzer bir sözdizimi kullanır, bu da JavaScript ile kolayca işlenebilir.
14. Fonksiyon ifadeleri ve fonksiyon beyanları
JavaScript’te fonksiyonlar, iki şekilde tanımlanabilir: Fonksiyon beyanları ve fonksiyon ifadeleri. Fonksiyon beyanları, fonksiyonun tanımını kodun önüne hoist eder, bu da fonksiyonu tanımlamadan önce kullanmamızı sağlar. Fonksiyon ifadeleri ise bir değişkene atanır ve bu değişkeni kullanarak çağırılır.
15. Modüler JavaScript: CommonJS ve ES Modules
JavaScript’te kodun daha organize ve yeniden kullanılabilir olması için modüler programlama kullanılır. CommonJS ve ES Modules, kodun farklı dosyalara ayrılmasını ve bu dosyaları gerektiğinde içe aktarılmasını sağlayan iki farklı modül sistemi.
Sonuç
JavaScript, web geliştirmede yaygın olarak kullanılan bir dil olmasına rağmen, birçok gizli özelliğe ve tuhaflığa sahiptir. Bu makalede, JavaScript’in şaşırtıcı 15 özelliğini ele aldık. Bu özellikleri anlamak, JavaScript’in çalışma şeklini daha iyi anlamanıza ve daha etkili ve güvenli kod yazmanıza yardımcı olacaktır.
#Etiketler: JavaScript, NaN, Infinity, karşılaştırma operatörleri, ==, ===, hoisting, prototype chain, DOM, closure, array, map, filter, reduce, this, callback, event handling, asenkron programlama, promises, async/await, AJAX, ‘use strict’, JSON, fonksiyon beyanları, fonksiyon ifadeleri, modüler JavaScript, CommonJS, ES Modules
