Tema: setTimeout
Ver Mensaje Individual
  #3 (permalink)  
Antiguo 07/11/2012, 17:30
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: setTimeout

buenas...
en realidad, se supone que primero se interprete la segunda línea y luego al cabo de un segundo la primera línea. ¿por qué? el código a interpretar de la primera línea está dentro de un string, mientras que la segunda línea está fuera de un string. cuando le pasas un string a setTimeout, javascript lo evalua (eval) y lo convierte como si fuera una función. en cambio, si le pasas directamente instrucciones (como la segunda línea), javascript lo interpreta al momento y el resultado de esa operación es devuelta a setTimeout como la operación a ejecutarse luego de transcurrido el tiempo indicado. en tu ejemplo, estaría ejecutando un objeto Window ya que eso es lo que devuelve self.open, que al fin y al cabo no reproduce ningún resultado. la otra modalidad es pasarle como argumento a setTimeout una función. en dicho caso, setTimeout invoca la función cuando transcurre el tiempo. en el siguiente ejemplo nótese el orden en que se declara los timer y orden en que ejecuta el contenido.

Código:
setTimeout("alert('primer timer declarado, se muestra segundo');", 5000);
setTimeout(function(){
alert('segundo timer declarado, se muestra primero');
}, 1000);
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.