Kontekst niepowiązanej funkcji w JavaScript
Spójrzmy, co się stanie, jeśli w funkcji
wskażemy this, ale nie powiążemy jej
z żadnym elementem, w ten sposób:
function func() {
console.log(this);
}
func();
W tym przypadku wynik zależy od tego,
czy mamy włączony
tryb ścisły
czy nie. Jeśli tryb nie jest ścisły,
to w this będzie przechowywane odniesienie do
window:
function func() {
console.log(this); // odniesienie do okna window
}
func();
A jeśli tryb jest ścisły, to w this będzie
przechowywane undefined:
"use strict";
function func() {
console.log(this); // undefined
}
func();
Z powyższego opisu może się wydawać, że
w trybie ścisłym this zawsze będzie
równe undefined. Ależ skąd! Jeśli po prostu
wypiszemy this poza funkcją, to będzie tam
odniesienie do window, niezależnie
od trybu:
"use strict";
console.log(this); // w this odniesienie do window
Podsumowanie
W każdej funkcji można napisać this,
nie spowoduje to żadnych błędów JavaScript.
Ale to, co dokładnie będzie znajdować się w tym this,
nie jest zdefiniowane do momentu wywołania funkcji.
Co więcej, przy różnych wywołaniach funkcji this
może przyjmować różne wartości. Wszystko zależy
od kontekstu, w którym funkcja została wywołana.