JavaScript'te Değişken Üzerinden Bağlam
Çözüm şu şekildedir: dış fonksiyonda
this değerini herhangi bir değişkene kaydederiz
ve bu değişken, tüm diğer değişkenler gibi,
iç fonksiyon içinden erişilebilir olacaktır
(genellikle bu değişken
self olarak adlandırılır). Böylece
this değerini dış fonksiyondan iç fonksiyona aktarmış oluruz:
"use strict";
let elem = document.querySelector('#elem');
elem.addEventListener('blur', parent);
function parent() {
console.log(this.value); // 'text' yazdıracak
let self = this; // this'i herhangi bir değişkene, örneğin self'e kaydet
function child() {
console.log(self.value); // 'text' yazdıracak
}
child();
}
Aşağıdaki kod verilsin:
<input id="elem" value="3">
"use strict";
let elem = document.querySelector('#elem');
elem.addEventListener('blur', func);
function func() {
alert( square() );
function square() {
return this.value * this.value;
}
}
Kodun yazarı, odak kaybedildiğinde
input'un value değerinin karesinin
ekranda gösterilmesini istemişti. Ancak,
odak kaybedildiğinde konsola bir hata
mesajı veriliyor. Yazarın kodundaki hatayı
düzeltin. Kodun yazarına, hatasının neden
ortaya çıktığını açıklayan bir metin yazın.