Контекст на несвързана функция в 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
може да приема различна стойност. Всичко зависи
от контекста, в който функцията е била извикана.