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