Kontekst via variabel i JavaScript
Løsningen er som følger: i den ydre funktion skriver vi
this til en hvilken som helst variabel, og denne variabel
vil være tilgængelig i den indre funktion, som
alle andre variable (normalt kaldes denne variabel
self). På denne måde sender vi
this fra den ydre funktion til den indre:
"use strict";
let elem = document.querySelector('#elem');
elem.addEventListener('blur', parent);
function parent() {
console.log(this.value); // vil udskrive 'text'
let self = this; // gemmer this i en hvilken som helst variabel, for eksempel self
function child() {
console.log(self.value); // vil udskrive 'text'
}
child();
}
Antag at vi har følgende kode:
<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;
}
}
Forfatteren af koden ønskede, at når inputfeltet mistede fokus,
ville kvadratet af tallet i value
blive vist på skærmen. Men af en eller anden grund, når fokus mistes,
opstår der en fejl i konsollen. Ret forfatterens fejl.
Skriv en tekst, hvor du giver forfatteren af koden en forklaring på, hvorfor
hans fejl opstod.