JavaScript Fonksiyonları, Süreçleri ve Yürütülmesi
JavaScript'te uzmanlaşmak, kodun nasıl çalıştığını anlamayı gerektirir.
İşte bilmeniz gereken temel kavramlar.
1. 5 JavaScript Fonksiyon Türü
- İsimlendirilmiş Fonksiyon (Named Function): Belirli bir isim kullanır. Bu, hataları hızlıca ayıklamanıza (debug) yardımcı olur.
- Anonim Fonksiyon (Anonymous Function): İsmi yoktur. Bunları geri çağırmalar (callbacks) veya değişken atamaları için kullanırsınız.
- Fonksiyon İfadesi (Function Expression): Bir fonksiyonu bir değişkene atarsınız.
- Ok Fonksiyonu (Arrow Function):
=>sembolünü kullanan kısa bir sözdizimidir.thisanahtar kelimesini farklı şekilde işler. - IIFE: Tanımlandığı anda çalışır. Kodunuzu izole tutar.
2. Süreç (Process) vs. İş Parçacığı (Thread)
Süreç (Process), çalışan bir programdır. Her sürecin kendi belleği vardır. Chrome çökerse Spotify çalışmaya devam eder çünkü bunlar ayrı süreçlerdir.
İş Parçacığı (Thread), bir sürecin içindeki küçük bir birimdir. İş parçacıkları aynı belleği paylaşır. Bu, onları süreçlerden daha hızlı ve daha hafif yapar.
3. Senkron vs. Asenkron
JavaScript tek iş parçacıklıdır (single-threaded). Genellikle her seferinde tek bir görev çalıştırır.
Senkron Yürütme (Synchronous Execution): Görevler katı bir sırayla çalışır. Bir sonraki satır, mevcut satırın bitmesini bekler. Bir görev çok uzun sürerse bu durum uygulamanızı yavaşlatabilir.
Asenkron Yürütme (Asynchronous Execution): Görevler şimdi başlayabilir ve daha sonra tamamlanabilir. Bu, kodunuzun engellenmesini (blocking) önler.
Nasıl çalışır:
- Call Stack (Çağrı Yığını) mevcut görevlerinizi yönetir.
- Web API'leri, zamanlayıcılar veya veri istekleri gibi uzun süren görevleri arka planda yönetir.
- Callback Queue (Geri Çağırma Kuyruğu) tamamlanan görevleri tutar.
- Event Loop (Olay Döngüsü), kuyruktaki görevleri yığın boşaldığında tekrar yığına taşır.
Asenkron akış örneği:
- "Hi" yazdır
- 2 saniyelik bir zamanlayıcı başlat
- "End" yazdır
- (2 saniye geçer) "Vicky" yazdır
Kod zamanlayıcıyı beklemez. Hemen "End" kısmına geçer.
İsteğe bağlı öğrenme topluluğu: https://t.me/GyaanSetuAi