Kontekst via variabel i JavaScript
Løsningen er som følger: i den ytre funksjonen skriver vi
this til en hvilken som helst variabel
og denne variabelen vil være tilgjengelig i den indre funksjonen, som
med alle variabler (vanligvis kalles denne variabelen
self). På denne måten overfører vi
this fra den ytre funksjonen til den indre:
"use strict";
let elem = document.querySelector('#elem');
elem.addEventListener('blur', parent);
function parent() {
console.log(this.value); // vil skrive ut 'text'
let self = this; // skriver this til en hvilken som helst variabel, for eksempel self
function child() {
console.log(self.value); // vil skrive ut 'text'
}
child();
}
Anta at vi har denne koden:
<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 av koden ønsket at ved tap av fokus
skulle kvadratet av tallet fra value
i inputfeltet vises på skjermen. Men av en eller annen grunn, ved tap av fokus
vises det en feil i konsollen. Rette opp feilen
i forfatterens kode. Skriv en tekst der du
gir en forklaring til forfatteren av koden om hvorfor feilen
oppstod.