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

←→
↑
en ru