Kontext přes proměnnou v JavaScriptu

Řešení je následující: ve vnější funkci zapíšeme this do libovolné proměnné a tato proměnná bude dostupná ve vnitřní funkci, stejně jako všechny ostatní proměnné (obvykle se tato proměnná nazývá self). Tímto způsobem přeneseme this z vnější funkce do vnitřní:

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 libovolné proměnné, například do self
  
  function child() {
    console.log(self.value); // vypíše 'text'
  }
  child();
}
Задание 1

Nechť je dán následující 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 chtěl, aby při ztrátě fokusu se na obrazovce zobrazil druhá mocnina čísla z value inputu. Avšak z nějakého důvodu při ztrátě fokusu se v konzoli objeví chyba. Opravte chybu v autorově kódu. Napište text, ve kterém poskytnete autorovi kódu vysvětlení, proč jeho chyba nastala.