Closures en JavaScript

Closures
“Un closure es un tipo especial de objeto que combina dos cosas: una función, y el entorno en que se creó esa función. El entorno está compuesto por las variables locales que están dentro del scope en el momento en que el closure fue creado” — MDN. Es decir que una función definida dentro del closure recuerda el entorno donde se creó y tiene acceso a las variables de ese entorno (variables libres).

Continue reading

Advertisements

¿Sabías esto de JavaScript?

JavaScript logo
JavaScript es un lenguaje de programación interpretado*, definido como orientado a objetos basado en prototipos (class-less), imperativo, débilmente tipado y dinámico.

JavaScript sigue algunos de los principios de la programación orientada a objetos, con un enfoque prototipado en donde los objetos ya existentes pueden servir de prototipo para los que se necesite crear. Además del paradigma OOP, JavaScript también permite trabajar el paradigma de programación funcional.

Características como funciones variádicas (número indefinido de parámetros en una función), tipos de datos dinámicos, hoisting, coerción, entre otros, hacen que JavaScript sea un lenguaje muy flexible y permisivo, por lo que es mejor conocer los principios del lenguaje para evitar cometer errores y caer en malas prácticas.
Continue reading

Hoisting en JavaScript

Hoisting

En la mayoría de los lenguajes de programación, el ámbito/alcance/scope de una variable está en el bloque donde fue definida (block-level scope), por ejemplo, dentro de un bloque if, for, while; sin embargo en JavaScript (ECMAScript 5.1) esto no es así, puesto que el alcance de una variable está en la función en donde fue declarada (function-level scope).

¿Qué es hoisting?

El hoisting o “elevamiento” es una de las particularidades de JavaScript y ocurre cuando declaramos una variable dentro de una función (su scope), entonces el intérprete* interno mueve la declaración (creación) de la variable al inicio de la función.
Continue reading