Skip to content

Latest commit

 

History

History
48 lines (32 loc) · 1.83 KB

File metadata and controls

48 lines (32 loc) · 1.83 KB

La declaración de funciones y expresiones

Las funciones en JavaScript son las primeras clases de objetos. Esto significa que se puede pasar como cualquier otro valor. Un uso común de está característica es pasar de una función anónima a otra, posiblemente una función asíncrona. Esto se conoce como callback.

La declaración function

function foo() {}

La función anterior se carga así mismo antes de iniciar la ejecución del programa; por lo tanto, está disponible en todo el scope (ámbito) de la aplicación donde se ha definido, aunque hubiera sido llamado antes de definirse en el código.

foo(); // Funciona porque foo ha sido creado antes que este código se ejecute
function foo() {}

La expresión function

var foo = function() {};

Este ejemplo asigna una función sin nombre y anónima a la variable foo.

foo; // 'undefined'
foo(); // Lanza TypeError
var foo = function() {};

Debido a la declaración de var, que carga el nombre de la variable foo antes de la ejecución real del inicio del código, foo ya estará definidido cuando se ejecute el script.

Pero se asigna sólo si ocurre en tiempo de ejecución, el valor de foo de forma predetermina es undefined antes de que el código se ejecute.

Expresión nombre de función

Otro caso especial de asignación de nombre de funciones.

var foo = function bar() {
    bar(); // Funciona
}
bar(); // ReferenceError

Aquí bar no está disponible en el ámbito externo (scope), ya que la función sólo es asignada a foo; Sin embargo, dentro de bar si está disponible. Esto se debe a la forma en como trabaja la resolución de nombres en JavaScript, el nombre de la función esta siempre disponible en el ámbito local de la propia función.