Контексти функсияи ба чизе ҳамбаста нашуда дар JavaScript
Биёед бубинем, ки чӣ рӯй медиҳад, агар дар функсия
this нишон диҳем,
вале онро ба ҳеҷ унсур
ҳамбаст накунем, ҳамчунин:
function func() {
console.log(this);
}
func();
Дар ин ҳолат натича вобаста ба ин аст, ки
реҷаи қатъӣ
дорем ё не. Агар реҷа қатъӣ набошад,
пас дар this истинод ба
window нигоҳ дошта мешавад:
function func() {
console.log(this); // истинод ба тирезаи window
}
func();
Ва агар реҷа қатъӣ бошад, пас дар this
undefined нигоҳ дошта мешавад:
"use strict";
function func() {
console.log(this); // undefined
}
func();
Аз он чи ки дар боло гуфта шуд, чунин ба назар мерасад, ки
дар реҷаи қатъӣ this ҳамеша
undefined хоҳад буд. Ҳаргиз не! Агар танҳо
this-ро берун аз функсия чоп кунем, пас дар он
истинод ба window бошад ҳам, аз реҷа вобаста нест:
"use strict";
console.log(this); // дар this истинод ба window
Хулосаҳо
Дар ҳар як функсия метавон this-ро навишт,
ин боиси ҳеҷ хатогии JavaScript нахоҳад шуд.
Вале ин ки дар ин this дақиқан чӣ хоҳад буд
то лаҳзаи даъвати функсия муайян нашудааст.
Ва ҳатто дар даъватҳои гуногуни функсия this
метавонад арзиши гуногун гирад. Ҳама чиз вобаста аст
ба контексте, ки функсия дар он даъват шудааст.