Estoy tratando de entender la diferencia entre las funciones flecha y funciones en javascript, con la ayuda de algún sitio web, y por lo que parecía entender, es this enlace el que cambia en el caso. Así que entendí que en la función flecha, this es enlazado a la función principal sin flecha más cercana this y en función normal, this está enlazado desde el más cercano this
Entonces, con eso en mente, estaba haciendo algunas pruebas en la consola del navegador y se me ocurrió esto:
test = { test_name: "OK", test_func: function() { console.log(this.test_name); (() => { console.log(this.test_name); function b() { console.log(this.test_name); } b(); })(); } } test.test_func();estaba esperando para conseguir
OK OK OKpero lo que obtengo es
OK OK undefinedY no puedo entender por qué, dado que obtengo 'OK' en la función de flecha, ¿por qué no obtengo 'OK' en la función b()?
De w3schools:
El manejo de this también es diferente en las funciones de flecha en comparación con las funciones regulares.
En resumen, con las funciones de flecha no hay vinculación de this .
En las funciones regulares, la palabra clave this representaba el objeto que llamó a la función, que podría ser la window , el document , un button o lo que sea.
Con las funciones de flecha, this palabra clave siempre representa el objeto que definió la función de flecha.