Ver Mensaje Individual
  #6 (permalink)  
Antiguo 16/09/2012, 09:27
Avatar de zerokilled
zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 7 meses
Puntos: 1485
Respuesta: Argumentos a una funcion event handler

no estoy seguro de haber entendido el análisis de tu primer punto. en este caso, al invocar escribe, la función registrarHandler utiliza como handler cualquier cosa que haya sido devuelta por la función escribe — aparentemente undefined. pudistes haber pasado el identificador de la función —escribe— pero los argumentos recibidos probablemente no sean los que necesitas en la función.

sobre el segundo punto; cierto que las funciones son objetos tipo Function. sin embargo, no es necesariamente cierto que la definición de la función esté antes que su invocación. todo dependerá de como declares la función: function expression o function declaration.

Código:
// function expresssion ;
console.log(typeof fn); // undefined;
// console.log(typeof fn()); // genera error de TypeError: undefined is not a funcion ;
var fn = function(){ return 0; };
console.log(typeof fn); // function;
en este ejemplo, nótese que la primera instrucción devuelve undefined pese a que antes de dicha línea no existe declaración alguna del identificador fn. esto es porque javascript, cuando entra en el contexto de un scope reserva todos los identificadores de variables explícitas (iniciados con var) y de funciones declarada con la instrucción function (ver próximo ejemplo). en este caso, javascript automáticamente asigna como valor undefined a los identificadores. si descomenta la tercera línea (la que invoca la función fn) en la consola debes ver que se genera un error.

Código:
// function declaration ;
console.log(typeof fn); // function ;
console.log(typeof fn()); // number ;
function fn(){ return 0; } // nótese la diferencia con el ejemplo anterior ;
console.log(typeof fn); // function ;
en este caso particular, cuando javascript entra en el contexto del scope, las funciones declaradas se crean primero. es por ello que la primera línea muestra function en la consola.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.