Contexto de función no vinculada en JavaScript
Veamos qué sucede si en una función
indicamos this, pero no la vinculamos
a ningún elemento, así:
function func() {
console.log(this);
}
func();
En este caso, el resultado depende de si
estamos en modo estricto
o no. Si el modo no es estricto,
entonces this contendrá una referencia a
window:
function func() {
console.log(this); // referencia a la ventana window
}
func();
Y si el modo es estricto, entonces this
contendrá undefined:
"use strict";
function func() {
console.log(this); // undefined
}
func();
De lo dicho anteriormente, podría parecer que
en modo estricto this siempre será
undefined. ¡Pero no es así! Si simplemente
mostramos this fuera de una función, entonces contendrá
una referencia a window independientemente
del modo:
"use strict";
console.log(this); // en this referencia a window
Conclusiones
En cualquier función se puede escribir this,
esto no conducirá a ningún error de JavaScript.
Pero qué exactamente habrá en este this
no está definido hasta el momento de llamar a la función.
Además, en diferentes llamadas a la función, this
puede tomar diferentes valores. Todo depende
del contexto en el que se llamó a la función.