Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

373
Vistas
Implicaciones de múltiples etiquetas <script> en HTML

He leído que no se recomienda instanciar jQuery varias veces en su HTML. Esto tiene perfecto sentido para mí, pero: ¿Javascript no es de un solo subproceso de todos modos? Y dejando atrás jQuery, ¿cómo ejecuta el navegador estas múltiples etiquetas de script? ¿En paralelo o uno tras otro?

gracias, felipe

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Respuesta sencilla:

En un escenario simple (las etiquetas son parte del texto HTML original), el navegador definitivamente las ejecuta una tras otra.

Discusión detallada con diferentes advertencias

JavaScript no es necesariamente de un solo subproceso (depende de la implementación de su motor de JavaScript, por ejemplo, consulte Web Workers ).

PERO, las etiquetas <script> individuales se ejecutan secuencialmente.

Para referencia, consulte JavaScript: The Definitive Guide . Citando el Capítulo "12.3. Ejecución de Programas JavaScript":

Las declaraciones de JavaScript que aparecen entre las etiquetas y se ejecutan en orden de aparición; cuando aparece más de un script en un archivo, los scripts se ejecutan en el orden en que aparecen. Si un script llama a document.write(), cualquier texto pasado a ese método se inserta en el documento inmediatamente después de la etiqueta de cierre y el analizador HTML lo analiza cuando el script termina de ejecutarse. Las mismas reglas se aplican a los scripts incluidos desde archivos separados con el atributo src.


Tenga en cuenta que lo anterior solo se aplica a la ejecución "directa" del código en las etiquetas. Sin embargo, el pedido puede verse afectado por:

  • setTimeout() llamadas (duh)

  • atributo diferido

  • Archivo adjunto dinámico de las etiquetas <script> : consulte la última sección de esta respuesta.


Como advertencia , tenga en cuenta que el código JavaScript cargado externamente a través de <script src="xxxx" /> todavía se ejecutará secuencialmente, PERO, es muy posible que el navegador DESCARGUE el código en paralelo, depende de la implementación del navegador (pero aún programar la ejecución de fragmentos de código descargados en el orden correcto).

Esta advertencia es importante en caso de que desee tener algún truco extraño, mientras que la URL de la fuente de JavaScript es en realidad un script CGI que hace algo y usted intenta depender del orden correcto de las descargas para la lógica del script.

Una vez más, no influiría en el orden de ejecución del motor JS de su navegador de esas piezas de script.


Sin embargo, una advertencia mucho más importante es que si realmente adjunta las etiquetas <script> con fuentes externas de forma dinámica (por ejemplo, a través de la llamada appendChild() ), de acuerdo con esta publicación SO , así como el blog de MSDN en el que se basó la publicación , no -¡Los navegadores IE NO garantizan el orden de ejecución! ¡Dependerá de qué código de etiqueta terminó de descargarse primero!

over 4 years ago · Santiago Trujillo Denunciar

0

Cuantas menos llamadas haga para instanciar un objeto jQuery, menos gastos generales tendrá, pero incluso si está diseñando para navegadores antiguos que se ejecutan en hardware de segunda generación, tenga cuidado con las microoptimizaciones. Perfile su aplicación y arregle las partes que realmente son los cuellos de botella.

En cuanto a la forma en que los navegadores manejan varias etiquetas de script, varía de un navegador a otro, de una versión a otra y, a veces, incluso de un sistema operativo a otro. Todos los navegadores ejecutan cada etiqueta de secuencia de comandos en el orden del documento:

 <script src="scripts/some_script.js"></script> <!-- Executed 1st --> <script src="scripts/some_other_script.js"></script> <!-- Executed 2nd --> <script> // Some JavaScript </script> <!-- Executed 3rd --> <script> // Some More JavaScript </script> <!-- Executed 4th -->

Sin embargo, otros comportamientos no están definidos y hay variación. Por ejemplo, Opera (al menos en Windows XP para la versión 10.6) ejecutó cada etiqueta de secuencia de comandos en su propio contexto, por lo que las variables locales en el tercer bloque de secuencias de comandos estarían fuera del alcance si se hace referencia en el cuarto bloque de secuencias de comandos.

 <script> var i = 42; </script> <script> alert(i); // Alerts "undefined" in Opera, but 42 in Firefox. </script>
over 4 years ago · Santiago Trujillo Denunciar

0

El navegador ejecuta JavaScript secuencialmente (lo mismo ocurre con jQuery, ya que jQuery es solo JavaScript).

En cuanto a tener varias etiquetas de secuencias de comandos en HTML, no hay ninguna razón por la que esto sea un problema. Como preguntó Nabab, me interesaría ver su fuente para eso.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda