Ð¯ÐºÑ Ð·Ð¼ÑÐ½Ð½Ñ Ð´Ð¾ÑÑÑпнÑ?
ФÑнкÑÑÑ makeWorker ÑÑвоÑÑÑ ÑнÑÑ ÑÑнкÑÑÑ Ñ Ð¿Ð¾Ð²ÐµÑÑÐ°Ñ ÑÑ. Ð¦Ñ Ð½Ð¾Ð²Ñ ÑÑнкÑÑÑ Ð¼Ð¾Ð¶Ð½Ð° викликаÑи Ñе звÑдкиÑÑ.
Чи маÑиме вона доÑÑÑп до зовнÑÑнÑÑ Ð·Ð¼ÑÐ½Ð½Ð¸Ñ Ð· мÑÑÑÑ ÑÑвоÑеннÑ, з мÑÑÑÑ Ð²Ð¸ÐºÐ»Ð¸ÐºÑ, Ñи з Ð¾Ð±Ð¾Ñ ?
function makeWorker() {
let name = "ÐеÑÑо";
return function() {
alert(name);
};
}
let name = "Ðван";
// ÑÑвоÑиÑи ÑÑнкÑÑÑ
let work = makeWorker();
// викликаÑи ÑÑ
work(); // Що вона покаже?
Яке знаÑÐµÐ½Ð½Ñ Ð²Ð¾Ð½Ð° покаже? âÐеÑÑоâ Ñи âÐванâ?
ÐÑдповÑдÑ: ÐеÑÑо.
ФÑнкÑÑÑ work() в ÐºÐ¾Ð´Ñ Ð½Ð¸Ð¶Ñе оÑÑимÑÑ name вÑд мÑÑÑÑ Ð¹Ð¾Ð³Ð¾ поÑ
Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ ÑеÑез поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° зовнÑÑÐ½Ñ Ð»ÐµÐºÑиÑне ÑеÑедовиÑе:
ÐÑже, вÑдповÑÐ´Ð´Ñ Ð±Ñде "ÐеÑÑо".
Ðле Ñкби не бÑло let name Ñ makeWorker(), ÑÐ¾Ð´Ñ Ð¿Ð¾ÑÑк вийÑов би за Ð¼ÐµÐ¶Ñ Ð»ÐµÐºÑиÑного ÑеÑедовиÑа Ñа взÑв би глобалÑÐ½Ñ Ð·Ð¼ÑннÑ, Ñк ми баÑимо з ланÑÑжка виÑе. Ð ÑÐ°ÐºÐ¾Ð¼Ñ Ð²Ð¸Ð¿Ð°Ð´ÐºÑ Ð²ÑдповÑÐ´Ñ Ð±Ñла б "Ðван".