Contexto de função não vinculada em JavaScript
Vamos ver o que acontece se em uma função
usarmos this, mas não a vincularmos a
nenhum elemento, assim:
function func() {
console.log(this);
}
func();
Neste caso, o resultado depende se
estamos no modo estrito
ou não. Se o modo não for estrito,
então this conterá uma referência ao
window:
function func() {
console.log(this); // referência ao objeto window
}
func();
E se o modo for estrito, então this
conterá undefined:
"use strict";
function func() {
console.log(this); // undefined
}
func();
Pelo exposto acima, pode parecer que
no modo estrito this será sempre
undefined. Mas não é bem assim! Se simplesmente
exibirmos this fora de uma função, então ele
será uma referência ao window independentemente
do modo:
"use strict";
console.log(this); // em this há uma referência a window
Conclusões
Em qualquer função, podemos escrever this,
isso não levará a quaisquer erros de JavaScript.
Mas o que exatamente estará dentro deste this
não é definido até o momento da chamada da função.
Além disso, em diferentes chamadas da função, this
pode assumir valores diferentes. Tudo depende
do contexto no qual a função foi chamada.