JS | Function declarations
JS | Context & Function invocation
- Function statement:
function name() {
statements
}
- Function expression:
function(){ // Anónima
statements
}
const nameFn = function(){ // Expresión de función
statements
}
const nameFn = () => statements // Formato flecha
- Las funciones, como objetos de orden superior, pueden ser tratadas como:
- Variables
- Valores
- Funciones anónimas
- El contexto está representado por
this
, refierendo según donde se encuentre a:- El contexto global es el objeto
window
this === window // true
- El contexto de una función es el objeto
window
function(){ this === window // true }
- El contexto de un método es el objeto al que pertenece
const person = { age: 22, grow() { this.age // 22 }
- El contexto de una función anidada en un método es el objeto
window
, a excepción del formato de función flecha, que no reorienta el contexto haciawindow
, o del uso de.bind()
para trasnferir a la función el contexto deseado:const person = { age: 22, grow() { setInterval(function(){ this.age // undefined }, 100) setInterval(function(){ this.age // 22 }.bind(this), 100) setInterval(() => { this.age // 22 }, 100) } }
- El contexto global es el objeto