Javascript’te Scope (Kapsam) Kavramı
Herkeze tekrardan selamlar bugün sizlere js deki Scope kavramından bahsedeceğim elimden geldiğinde örnekler vererek açıklamaya çalışacağım…
Javascript’te Scope (Kapsam) Kavramı
Herkeze tekrardan selamlar bugün sizlere js deki Scope kavramından bahsedeceğim elimden geldiğinde örnekler vererek açıklamaya çalışacağım ve olabildiğinde açıklayıcı ve kısa tutmaya çalışacağım, hazırsanız hadi geçelim!.
Javascript öğrenmeye başlayan herkesin erken aşamada karşılaştığı konulardan biri de scope (kapsam) kavramıdır. Scope, bir değişkenin nerede tanımlandığını ve programın hangi bölümlerinden erişilebildiğini belirler. Bu konuyu anlamak, daha temiz ve hatasız kod yazmak için oldukça önemlidir.
Scope Nedir?
Scope, basitçe bir değişkenin erişilebilir olduğu alanı ifade eder. Yani bir değişkeni tanımladığımızda, bu değişkene her yerden erişemeyiz. Erişebileceğimiz alan, o değişkenin scope’u tarafından belirlenir.
Javascript’te temel olarak üç farklı scope türü vardır:
- Global Scope
- Function Scope
- Block Scope
Global Scope
Global scope, bir değişkenin tüm dosya boyunca erişilebilir olduğu anlamına gelir. Eğer bir değişken herhangi bir fonksiyonun ya da blok yapının dışında tanımlanmışsa, bu değişken global scope’a sahiptir.
let isim = "Ahmet";
function yazdir() {
console.log(isim);
}
yazdir(); // Ahmet
Burada isim değişkeni global scope’ta tanımlandığı için her yerden erişilebilir.
Ancak global değişken kullanımı dikkatli yapılmalıdır. Çünkü fazla sayıda global değişken, kodun yönetimini zorlaştırır ve hatalara açık hale getirir.
Function Scope
Function scope, bir değişkenin sadece tanımlandığı fonksiyon içinde geçerli olmasıdır. var ile tanımlanan değişkenler function scope’a sahiptir.
function test() {
var sayi = 10;
console.log(sayi);
}
test(); // 10
console.log(sayi); // Hata
Burada sayi değişkeni sadece test fonksiyonu içinde kullanılabilir. Fonksiyon dışından erişmeye çalışırsak hata alırız.
Block Scope
Block scope, {} süslü parantezler içinde tanımlanan değişkenlerin sadece o blok içinde geçerli olmasıdır. let ve const ile tanımlanan değişkenler block scope’a sahiptir.
if (true) {
let yas = 25;
console.log(yas);
}
console.log(yas); // Hata
Burada yas değişkeni sadece bulunduğu block (blok) içinde kullanılabilir.
Var, Let ve Const Farkı
Scope konusunu anlamak için var, let ve const arasındaki farkı bilmek gerekir.
var→ function scopeletveconst→ block scope
if (true) {
var a = 1;
let b = 2;
}
console.log(a); // 1
console.log(b); // Hata
Bu örnek, function scope ile block scope arasındaki farkı net şekilde gösterir.
Scope Chain (Scope Zinciri)
Javascript’te bir değişkene erişmeye çalıştığımızda, motor önce bulunduğu scope’a bakar. Eğer bulamazsa bir üst scope’a çıkar. Bu işlem global scope’a kadar devam eder. Buna scope chain denir.
let x = 10;
function outer() {
function inner() {
console.log(x);
}
inner();
}
outer(); // 10
Burada inner fonksiyonu x değişkenini kendi içinde bulamaz ama bir üst scope’tan alır.
Sonuç
Scope (kapsam) kavramı, Javascript’in temel yapı taşlarından biridir. Değişkenlerin nerede tanımlandığını ve nereden erişilebildiğini bilmek, daha kontrollü ve hatasız kod yazmayı sağlar.
Özellikle:
- Global scope her yerden erişilebilir
- Function scope sadece fonksiyon içinde geçerlidir
- Block scope sadece tanımlandığı blok içinde geçerlidir
Bu kavramları doğru anlamak, daha okunabilir ve sürdürülebilir kod yazmanın temelidir.
Evet bugün scop kavramından ve çeşitlerinden bahsettik konu buraya kadardı umarım yeterince anlaşılabilir ve net olmuştur birdahaki yazımlarda görüşmek dileği ile.
Beni sosyal medya hesaplarımdan takip etmek ve sorularınız için :
İnsta: https://www.instagram.com/emirhnbyrmm/
Linkedin: https://www.linkedin.com/in/emirhan-bayram-3a556438b/
메타데이터
- post_id
- 755dce6f7af3
- slug
- javascriptte-scope-kapsam-kavramı-755dce6f7af3
- url
- https://medium.com/@emirhnbyrm2/javascriptte-scope-kapsam-kavram%C4%B1-755dce6f7af3
- canonical_url
- https://medium.com/@emirhnbyrm2/javascriptte-scope-kapsam-kavram%C4%B1-755dce6f7af3
- author_url
- https://medium.com/@emirhnbyrm2
- status
- ok
- fetched_at
- 2026-06-21 09:28:28