JavaScript'te Fonksiyonların Dış Değişkenlere Erişimi
Aşağıdaki kodu inceleyelim:
let num = 1; // değişkene değer atıyoruz
function func() {
console.log(num); // değeri konsola yazdırıyoruz
}
func(); // fonksiyonu çağırıyoruz
Daha önce de belirttiğim gibi, değişkenin değeri fonksiyon tanımından önce olmak zorunda değildir, önemli olan fonksiyon çağrısından önce olmasıdır:
function func() {
console.log(num);
}
let num = 1;
func();
Aslında bu tam olarak doğru değil. Fonksiyonumuz
çağrılmadan önce bile num değişkeninin değerini
bilir:
let num = 1;
function func() {
console.log(num); // fonksiyon num = 1 olduğunu zaten biliyor
}
İşte daha karmaşık bir örnek:
let num = 1; // fonksiyon bu anda num = 1 olduğunu öğrenir
function func() {
console.log(num);
}
num = 2; // fonksiyon bu anda num = 2 olduğunu öğrenir
Fonksiyon çağrıları ekleyelim:
let num = 1; // fonksiyon bu anda num = 1 olduğunu öğrenir
func(); // 1 yazdırır
function func() {
console.log(num);
}
func(); // 1 yazdırır
num = 2; // fonksiyon bu anda num = 2 olduğunu öğrenir
func(); // 2 yazdırır
Tekrar edeyim: aslında fonksiyon, çağrılmamış olsa bile dış değişkenlerin değerlerini bilir.