Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Aterrizando en JS: consejos para [node]sesperar en el intento

Cuando pasé de desarrollar en Java a adentrarme en el para mí desconocido mundo JS mi día era una sucesión de: "pero... wtf is this?" (pun intended). Con el tiempo, lecturas varias y la paciente ayuda de mis compis fui viendo la luz de la mano de Node, Typescript (¡no sin mis tipos!) y demás amigas del festival JS. Porque no, JS no es malvado... sólo rarito de conocer :P

Así que para quien aún mire a JS con recelo o quiera repasar algunos de sus aspectos clave, os traigo una serie de consejos que, espero, os hagan ver JS con mejores ojos.

  • Login to see the comments

  • Be the first to like this

Aterrizando en JS: consejos para [node]sesperar en el intento

  1. 1. Aterrizando en JS Esther Lozano @esloho Consejos para node sesperar en el intento
  2. 2. DISCLAIMER
  3. 3. Hola JS!
  4. 4. Asincronía MIND THE (TIME) GAP
  5. 5. Asincronía Paralelismo Asincronía t t Hilo 1 Hilo 2
  6. 6. Asincronía y concurrencia Event Loop Proceso 1 Proceso 2
  7. 7. Asincronía
  8. 8. Callback hell
  9. 9. Callback hell
  10. 10. Promesas
  11. 11. Promesas
  12. 12. Promesas
  13. 13. Promesas
  14. 14. async - await
  15. 15. Ámbitos
  16. 16. Ámbitos
  17. 17. Ámbitos Compiler Engine Scope
  18. 18. Ámbitos var a = 2 Compiler: Hey! ¿Tienes una a en este ámbito? Scope: Sip! Compiler: Chachi! Fase de generación de código
  19. 19. Ámbitos var a = 2 Compiler: Hey! ¿Tienes una a en este ámbito? Scope: No sé de qué me hablas... Compiler: Vete creando una entonces ;) Fase de generación de código
  20. 20. Ámbitos var a = 2 Engine: Hey! ¿Tienes una a en este ámbito? Scope: Mmm… aquí no encuentro nada Engine: Vaya… ¿y en algún otro sitio? Fase de ejecución Scope: ¡La encontré! Engine: Yuju! Pues le voy poniendo valor 2
  21. 21. Ámbitos var a = 2 Engine: Hey! ¿Tienes una a en este ámbito? Scope: Mmm… aquí no encuentro nada Engine: Vaya… ¿y en algún otro sitio? Fase de ejecución Scope: Ni aquí ni en Júpiter, no insistas Engine: Whaaaaaaaat…?
  22. 22. Ámbitos ReferenceError
  23. 23. Ámbitos a = 2 // Asignación implícita de parámetro ReferenceError… o no
  24. 24. Ámbitos
  25. 25. // 2 // undefined // undefined Hoisting // undefined?? // 2?? ReferenceError??
  26. 26. Hoisting vs.
  27. 27. Hoisting Las funciones van primero
  28. 28. Hoisting Las declaraciones de funciones se sobreescriben
  29. 29. Closures
  30. 30. Closures
  31. 31. Closures
  32. 32. Closures “1” “2” “3” “4” “5” “6” “6” “6” “6” “6”
  33. 33. Closures
  34. 34. Closures
  35. 35. WTF is this…?
  36. 36. WTF is this…? Default binding Implicit binding Explicit binding New binding
  37. 37. WTF is this…?
  38. 38. WTF is this…?
  39. 39. WTF is this…?
  40. 40. No sin mis tipos
  41. 41. Cuenta con mi arco!
  42. 42. Más madera ● Spread ● Rest
  43. 43. Más madera ● Default parameter values
  44. 44. Más madera ● Default value expressions
  45. 45. Más madera ● Destructuring
  46. 46. Más madera ● Interpolated expressions
  47. 47. Más madera ● for … in / for… of
  48. 48. Referencias ● You Don’t Know JS https://github.com/getify/You-Dont-Know-JS ● Documentación Typescript y playground http://www.typescriptlang.org/ ● Compilador en línea Babel https://babeljs.io/repl/ ● Tutoriales https://nodeschool.io/#workshoppers ● Pa las risas https://www.destroyallsoftware.com/talks/wat
  49. 49. Esther Lozano @esloho ¿Preguntas? esloho@seedtag.com

×