Contextul unei funcții nelegate în JavaScript
Să vedem ce se întâmplă dacă într-o funcție
specificăm this, dar nu o legăm de
niciun element, astfel:
function func() {
console.log(this);
}
func();
În acest caz, rezultatul depinde de faptul dacă
modul este strict
sau nu. Dacă modul nu este strict,
atunci în this va stoca o referință la
window:
function func() {
console.log(this); // referință la window
}
func();
Iar dacă modul este strict, atunci în this va
stoca undefined:
"use strict";
function func() {
console.log(this); // undefined
}
func();
Din cele menționate mai sus, s-ar putea părea că
în modul strict this va fi întotdeauna
undefined. Dar nu este așa! Dacă pur și simplu
afișăm this în afara unei funcții, atunci în el
va fi o referință la window indiferent
de mod:
"use strict";
console.log(this); // în this referință la window
Concluzii
În orice funcție se poate scrie this,
acest lucru nu va duce la erori în JavaScript.
Dar ce anume va fi stocat în acest this
nu este definit până în momentul apelării funcției.
Mai mult, la apelări diferite ale funcției, this
poate primi valori diferite. Totul depinde
de contextul în care a fost apelată funcția.