Si pudieras decirle a una clase de estudiantes principiantes de diseño web una cosa sobre JavaScript, ¿cuál sería?

Hagamos algunos de los conceptos iniciales más difíciles en JavaScript (la relación entre esto y el alcance, y qué cierre hace) el más simple.

El alcance es simple; lo usas para dar sentido a cada conversación que tienes. Una vez que lo entiendes, el concepto de cierre es aún más simple.

En los idiomas humanos, tenemos ‘nosotros’, ‘usted’ ‘él’, ‘ella’, etc., como el sujeto implícito. En JavaScript, es mucho más fácil; solo tenemos uno y lo llamamos ‘esto’.

Entonces en inglés, cuando dices

John es un gran nadador. Ha ganado muchas medallas por ello.

JavaScript es él. El alcance es lo que te dice que John y Él son referencias a lo mismo. Scope mantiene el contexto de ‘estamos hablando de John cuando decimos que Él ‘.

Supongamos que usted y un amigo estaban caminando y hablando de John, pero luego un conductor de automóvil se distrajo y le pidió instrucciones, y luego cambió a discutir las instrucciones antes de darle una respuesta al conductor. Después de que el conductor se vaya, tu amigo podría decir ‘Entonces, ¿cuántas medallas ganó por nadar?’.

Puede reanudar esta conversación y aún saber que él y John son iguales debido a lo mismo que el cierre en JavaScript. El contexto dentro del cual se está discutiendo la conversación sobre John aún no se ha cerrado. De hecho, incluso podría decir ‘él sabría las instrucciones porque la piscina está encendida está en la ruta’, y tanto usted como su amigo sabrían que estaban hablando de John.

El cierre es el acto de mantener un alcance (contexto de conversación) después de que la conversación ha cambiado a otro contexto anidado ; “No hemos cerrado la conversación sobre John y podemos volver a él” .


Cada vez que vea esto en un guión, piense en ello como una discusión sobre John, donde se ha movido de decir John y en su lugar lo está usando .

Si escribe un controlador de eventos para un objeto John, entonces esto dentro del controlador es como él en una conversación asumiendo que John es el sujeto.

Cada vez que vea una función definida dentro de otra función, piense en la función externa como una conversación que mantiene el contexto de la conversación mientras se ejecuta la conversación interna (función).

No es Java No lo trates como es.


Explicación:

Según mi experiencia, a la mayoría de las universidades, ya sea bueno o malo, les gusta comenzar a enseñar Herencia Clásica Orientada a Objetos, por lo que estos estudiantes probablemente tengan algo de historia leve y poco enseñada con Java.


De hecho, JavaScript no es solo un nombre diferente para Java. Si saben lo suficiente sobre Java como para saber eso, probablemente sepan lo suficiente como para intentar aplicar algunos de esos mismos patrones de diseño que aprendieron de Java a Javascript.

Esto está mal. Necesitan alejarse de esto. Aunque los nombres son similares y aunque ahora con ES6 puede implementar algunos de los mismos patrones de diseño que existen en Java, debe mantenerse alejado de esto. JavaScript no está estáticamente escrito. JavaScript puede programarse casi de todos modos, independientemente de si debe o no programarlo de esa manera.

Examine los patrones de diseño de composición y programación funcional. Realmente creo que estos son los mejores patrones de diseño para emparejar con JavaScript y no estoy solo en esto. La comunidad se está moviendo hacia esto.

¡Domínalo!

Dedica todo tu tiempo a estudiar y aplicar lo que aprendes. JavaScript se está convirtiendo rápidamente en un lenguaje dominante en el mundo de desarrollo web.