Contexte d'une fonction non liée en JavaScript
Voyons ce qui se passe si dans une fonction
nous indiquons this, mais sans la lier
à aucun élément, comme ceci :
function func() {
console.log(this);
}
func();
Dans ce cas, le résultat dépend du fait que
nous soyons en mode strict
ou non. Si le mode n'est pas strict,
alors this contiendra une référence à
window :
function func() {
console.log(this); // référence à la fenêtre window
}
func();
Et si le mode est strict, alors this contiendra
undefined :
"use strict";
function func() {
console.log(this); // undefined
}
func();
De ce qui précède, on pourrait penser que
en mode strict, this sera toujours
undefined. Pas du tout ! Si nous affichons simplement
this en dehors de toute fonction, alors il
contiendra une référence à window, indépendamment
du mode :
"use strict";
console.log(this); // dans this une référence à window
Conclusions
Dans n'importe quelle fonction, on peut écrire this,
cela ne provoquera pas d'erreur JavaScript.
Mais ce qui sera stocké dans ce this
n'est pas défini jusqu'au moment de l'appel de la fonction.
De plus, lors de différents appels de la fonction, this
peut prendre différentes valeurs. Tout dépend
du contexte dans lequel la fonction a été appelée.