var ve scope
- Node.js kursu
- Başlangıç
- Ders 8/116
- 4 dk
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
// 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
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
if (true) {
____
console.log(x);
}
if (true) {
let x = 5;
console.log(x);
}
Açıklama: let ile blok kapsamı sağlanır.