¿Cuántos programas de JavaScript se ejecutan para una sola página web en el navegador?

Los programas de JavaScript consisten en declaraciones y declaraciones de funciones. Cuando se ejecuta un programa JavaScript, se producen estos dos pasos:

el código se escanea en busca de declaraciones de funciones y cada función. la declaración se "ejecuta" (creando un objeto de función) y se crea una referencia con nombre a esa función (de modo que se pueda invocar esta función desde una declaración)

las declaraciones se ejecutan (evalúan) secuencialmente (tal como aparecen en el código)

Por eso, estofunciona bien:

<script>
    foo();
    function foo() {
        return;
    }
</script>

Aunque la función "foo" se llama antes de declararse, funciona porque la declaración de la función se evalúa antes que la declaración.

Sin embargo, estoNo funciona:

<script>
    foo();
</script>
<script>
    function foo() {
        return;
    }
</script>

Se lanzará un ReferenceError ("foo no está definido"). Esto lleva a la conclusión de que cada elemento SCRIPT dentro del código HTML de la página web representa un programa JavaScript separado y cada vez que el analizador HTML encuentra un elemento SCRIPT, ejecuta el programa dentro de ese elemento (y luego, una vez que se ejecuta el programa, el analizador pasa al código HTML que sigue al elemento SCRIPT).

Por otra parte, estofunciona:

<script>
    function foo() {
        return;
    }
</script>
<script>
    foo();
</script>

Comprendo que el objeto Global (que sirve como objeto Variable en el contexto de ejecución global) existe (y permanece) en todo momento, por lo que el primer programa JavaScript creará el objeto de función y hará una referencia para él, y luego, el segundo programa de JavaScript usará esa referencia para llamar a la función. Por lo tanto, todos los programas de JavaScript (dentro de una sola página web) "usan" el mismo objeto Global, y todos los cambios realizados en el objeto Global por un programa de JavaScript pueden ser observados por todos los programas de JavaScript que se ejecutan posteriormente.

Ahora, tenga en cuenta esto ...

<script>
    // assuming that foo is not defined
    foo();
    alert(1);
</script>

En el caso anterior, la llamada de alertano se ejecutará, porque la instrucción "foo ()" arroja un ReferenceError (que rompe todo el programa JavaScript) y, por lo tanto, no se ejecutan todas las instrucciones posteriores.

Sin embargo, en este caso ...

<script>
    // assuming that foo is not defined
    foo();
</script>
<script>
    alert(1);
</script>

Ahora, la llamada de alertase ejecuta. El primer programa de JavaScript arroja un ReferenceError (y como consecuencia se rompe), pero el segundo programa de JavaScript se ejecuta normalmente. Por supuesto, el navegador informará el error (aunque ejecutó programas JavaScript posteriores, después de que se produjo el error).

Ahora, mis conclusiones son:

cada elemento SCRIPT dentro del código HTML de la página web representa un programa JavaScript separado. Estos programas se ejecutan inmediatamente cuando el analizador HTML los encuentra.todos los programas de JavaScript dentro de la misma página web "usan" el mismo objeto Global. Ese objeto Global existe en todo momento (desde el momento en que se recupera la página web hasta que se destruye la página web). Los programas JavaScript pueden manipular el objeto Global, y todos los cambios realizados al objeto Global por un programa JavaScript se pueden observar en todos los programas JavaScript posteriores.si un programa de JavaScript se rompe (al generar un error), eso no impide que se ejecuten los siguientes programas de JavaScript.

Por favor, compruebe esta publicación y dígame si tengo algo mal.

Además, no he encontrado recursos que expliquen los comportamientos mencionados en esta publicación, y supongo que los fabricantes de navegadores deben haber publicado dichos recursos en algún lugar, por lo que si los conoce, proporcione los enlaces a ellos.

Respuestas a la pregunta(3)

Su respuesta a la pregunta