Contesto tramite variabile in JavaScript
La soluzione è la seguente: nella funzione esterna scriviamo
this in una variabile qualsiasi e questa variabile
sarà accessibile nella funzione interna, come
tutte le variabili (di solito questa variabile viene chiamata
self). In questo modo passeremo
this dalla funzione esterna a quella interna:
"use strict";
let elem = document.querySelector('#elem');
elem.addEventListener('blur', parent);
function parent() {
console.log(this.value); // stamperà 'text'
let self = this; // scriviamo this in una variabile qualsiasi, ad esempio, in self
function child() {
console.log(self.value); // stamperà 'text'
}
child();
}
Sia dato questo codice:
<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;
}
}
L'autore del codice voleva che alla perdita del focus
sullo schermo venisse visualizzato il quadrato del numero da value
dell'input. Tuttavia, per qualche motivo, alla perdita del focus
nella console viene generato un errore. Correggi l'errore
dell'autore del codice. Scrivi un testo in cui
spiegherai all'autore del codice perché è sorto
il suo errore.