Kontekst preko promenljive u JavaScript-u

Rešenje je sledeće: u spoljnoj funkciji ćemo upisati this u bilo koju promenljivu i ta promenljiva će biti dostupna u unutrašnjoj funkciji, kao i sve promenljive (obično se ta promenljiva naziva self). Na taj način ćemo preneti this iz spoljne funkcije u unutrašnju:

javascript"use strict";

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

function parent() {
  console.log(this.value); // ispisaće 'text'
  
  let self = this; // upisaćemo this u bilo koju promenljivu, na primer, u self
  
  function child() {
    console.log(self.value); // ispisaće 'text'
  }
  child();
}
Задание 1

Neka je dat ovakav kod:

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;
  }
}

Autor koda je želeo da se pri gubitku fokusa na ekran ispiše kvadrat broja iz value input polja. Međutim, iz nekog razloga pri gubitku fokusa u konzolu se ispisuje greška. Ispravite grešku autora koda. Napišite tekst u kome ćete objasniti autoru koda zašto je došlo do njegove greške.