Estaba siguiendo un tutorial de React donde un archivo javascript A que contiene algunas funciones y varias declaraciones de registro de la consola, etc., se importa a otro archivo javascript B.
Luego se llama a una de esas funciones del archivo A en el archivo B, pero hubo un error, pero todas las declaraciones de registro de la consola y otros comandos del archivo A se ejecutaron bien.
Me preguntaba por qué algunas partes del archivo A funcionaron bien, pero no las funciones, ¿la importación del archivo completo no trae esencialmente todo lo que hay en ese archivo al alcance del archivo B?
Por ejemplo:
a.js
console.log("hi"); function test1() { console.log("test1"); }b.js
import './a.js'; test1();... ¿la importación de todo el archivo esencialmente no trae todo en ese archivo al alcance del archivo B?
No, en absoluto. El módulo de ejemplo que ha mostrado no exporta nada, por lo que todo lo que contiene (la función test1 ) es completamente privado para el módulo. Este es uno de los beneficios clave de los módulos: brindan un alcance privado para los detalles del módulo que no desea compartir, con una forma explícita de compartir las cosas que desea compartir.
Me preguntaba por qué algunas partes del archivo A funcionaban bien pero no las funciones...
Eso es porque ha importado el módulo. Incluso si el módulo no importa ni exporta nada, su código de nivel superior aún se ejecuta como parte del proceso de carga (la primera vez que se importa). Algunos módulos están diseñados únicamente para cargarse por sus efectos secundarios (lo que hace su código de nivel superior). Tu ejemplo es así; su efecto secundario es el console.log que hace.