Kontext cez premennú v JavaScripte

Riešenie je nasledovné: vo vonkajšej funkcii zapíšeme this do akejkoľvek premennej a táto premenná bude prístupná vo vnútornej funkcii, ako a všetky premenné (obvykle sa táto premenná nazýva self). Týmto spôsobom prenesieme this z vonkajšej funkcie do vnútornej:

javascript"use strict";

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

function parent() {
  console.log(this.value); // vypíše 'text'
  
  let self = this; // zapíšeme this do akejkoľvek premennej, napríklad do self
  
  function child() {
    console.log(self.value); // vypíše 'text'
  }
  child();
}
Задание 1

Nech je daný takýto kód:

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 kódu chcel, aby pri strate fókusu sa na obrazovke zobrazil štvorec čísla z value inputu. Avšak, z nejakého dôvodu pri strate fókusu sa do konzoly vypíše chyba. Opravte chybu autora kódu. Napíšte text, v ktorom poskytnete autorovi kódu vysvetlenie, prečo nastala jeho chyba.