2012-01-13 11 views
6

Tuve another question in SO about setTimeout(), donde un usuario mencionó que si el argumento de la función es una cadena se evalúa en el alcance global, de lo contrario no es. Esto fue una revelación, así que traté de encontrar más información sobre cómo funciona realmente setTimeout, pero no es parte de la especificación EcmaScript y ni siquiera MDN tenía esa información específica que encontré en SO.setTimeout(): Si no está definido en la especificación EcmaScript, ¿dónde puedo aprender cómo funciona?

¿Hay alguna buena referencia sobre cómo funciona setTimeout()?

+2

[aquí] (https://developer.mozilla.org/en/DOM/window.setTimeout) es la página MDN. – Pointy

+1

En el borrador de HTML5: http://dev.w3.org/html5/spec/Overview.html#timers –

+0

, el MDN tiene información útil al respecto: "El código ejecutado por setTimeout() se ejecuta en un contexto de ejecución independiente a la función de la que se llamó ". –

Respuesta

9

setTimeout y tales no están en la especificación ECMAScript porque no son características de JavaScript. Son características del objeto window del entorno del navegador. Otros entornos (Windows Scripting Host, NodeJS, etc.) no necesariamente tendrán esas características.

El W3C ha estado tratando de estandarizar el objeto window y sus diversas funciones (incluyendo setTimeout), the latest is in the timers section of the HTML5 spec. Mucho de esto codifica lo que los navegadores ya hacen, aunque parte (como decir que el valor del intervalo mínimo debe ser 4 [milisegundos]) parece (para mí) estar fuera de lugar para una especificación API y las implementaciones parecen tomar una decisión (in tests), puede ver que los navegadores actuales hacen un intervalo más corto, con la aparente excepción de Opera, que parece hacer lo que dice la especificación.

+0

Guau las especificaciones de HTML5 siempre me marean. Pero no había pensado en la situación con respecto a los trabajadores de la web. – Pointy

+0

Creo que la especificación W3C Window Object está abandonada. HTML5 especifica por completo el objeto 'ventana', o al menos intenta hacerlo. –

+0

Ese borrador estaba medio lleno de "necesidad de escribir esto" o "¿qué poner aquí?" Algo risible para una especificación w3c. Por cierto, tu último enlace está roto. – rvighne