Контекст през променлива в JavaScript
Решението е следното: във външната функция ще запишем
this във всяка променлива
и тази променлива ще бъде достъпна във вътрешната функция, както
и всички променливи (обикновено тази променлива се нарича
self). По този начин ще предадем
this от външната функция във вътрешната:
"use strict";
let elem = document.querySelector('#elem');
elem.addEventListener('blur', parent);
function parent() {
console.log(this.value); // ще изведе 'text'
let self = this; // записваме this във всяка променлива, например в self
function child() {
console.log(self.value); // ще изведе 'text'
}
child();
}
Нека е даден такъв код:
<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;
}
}
Авторът на кода искаше при загуба на фокус
на екрана да се изведе квадратът на числото от value
на инпута. Въпреки това, поради някаква причина при загуба на фокус
в конзолата се появява грешка. Поправете грешката
на автора на кода. Напишете текст, в който
да дадете обяснение на автора на кода, защо възникнала
неговата грешка.