CodeBlanks Logo Icon CodeBlanks

var ve scope

var'ın fonksiyon scope'unu ve hoisting'i öğrenirsin.

var ve scope

var, JavaScript'in eski değişken tanımlama anahtar kelimesidir. var ile tanımlanan değişkenler fonksiyon kapsamına sahiptir; yani bir { } bloğunda tanımlansalar bile blok dışından erişilebilirler.

Bu durum beklenmeyen hatalara yol açabilir. Örneğin bir if bloğu içinde var x = 5 tanımlarsan, blok dışında da x görünür olur.

Bu yüzden modern Node.js kodlarında let ve const tercih edilir.

Function ve block scope

Fonksiyon kapsamı: bir değişken, tanımlandığı fonksiyon boyunca görünürdür. Blok kapsamı ise değişkeni yalnızca tanımlandığı { } bloğu içinde tutar.

var fonksiyon kapsamlıdır: bir if bloğunda tanımlanan var x, blok dışında da görünür. let ve const ise blok kapsamlıdır: blok dışında erişilemezler.

Bu yüzden modern Node.js kodlarında let ve const tercih edilir; beklenmeyen sızıntılar önlenir.

Uygulama var vs let göster

Bir if (true) bloğu içinde let x = 10 tanımla. Blok içinde console.log(x) ile yazdır. Blok dışında console.log('bitti') yazdır.

Başlangıç kodu

index.js
// if (true) bloğu içinde let x = 10 yaz
// Blok içinde x'i yazdır
// Blok dışında 'bitti' yazdır

Örnek çözüm

index.js
if (true) {
  let x = 10;
  console.log(x);
}
console.log("bitti");

Beklenen çıktı

10
bitti

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Kapsam kavramlarını eşleştir

Kavram Anlamı
var Fonksiyon kapsamı
let Blok kapsamı (değişebilir)
const Blok kapsamı (sabit)
hoisting Üste çekme

2 var'ın temel sorunu nedir?

  • Çok yavaştır
  • Blok kapsamı yok, fonksiyon kapsamı vardır Doğru cevap
  • Yeniden atanamaz
  • Yalnızca sayı tutabilir

Açıklama: var fonksiyon kapsamındadır, blok dışına sızar.

3 let ile block scope

Soru
if (true) {
  ____
  console.log(x);
}
Cevap
if (true) {
  let x = 5;
  console.log(x);
}

Açıklama: let ile blok kapsamı sağlanır.

Başlangıç bölümündeki tüm dersler