Konteksti muuttujan kautta JavaScriptissä

Ratkaisu on seuraava: ulommaisessa funktiossa tallennamme this mihin tahansa muuttujaan, ja tämä muuttuja on saatavilla sisäisessä funktiossa, kuten kaikki muuttujat (yleensä tätä muuttujaa kutsutaan self). Näin välitämme this ulommaisesta funktiosta sisäiseen:

javascript"use strict";

let elem = document.querySelector('#elem');
elem.addEventListener('blur', parent);

function parent() {
  console.log(this.value); // tulostaa 'text'
  
  let self = this; // tallennetaan this mihin tahansa muuttujaan, esimerkiksi self
  
  function child() {
    console.log(self.value); // tulostaa 'text'
  }
  child();
}
Задание 1

Olkoon annettuna tällainen koodi:

html<input id="elem" value="3">
javascript"use strict";

let elem = document.querySelector('#elem');
elem.addEventListener('blur', func);

function func() {
  alert( square() );
  
  function square() {
    return this.value * this.value;
  }
}

Koodin kirjoittaja halusi, että kentän fokuksen menettäessä näytölle tulostettaisiin value-kentän arvon neliö. Kuitenkin jostain syystä fokuksen menettäessä konsoliin ilmestyy virhe. Korjaa koodin kirjoittajan virhe. Kirjoita teksti, jossa annat selityksen koodin kirjoittajalle, miksi hänen virheensä syntyi.