Quiero saber si puedo hacer que el alcance de una variable salga de una etiqueta de secuencia de comandos del módulo, o si puedo exportarlo de alguna manera e importarlo en otra etiqueta de secuencia de comandos.
mi código actual es algo como esto:
<script> var variable1 = 'first variable :)'; var variable2 = 'second variable :)'; </script> <script> // i want to be able to access variable1 here, but not variable2 </script>¿Sería posible algo así?
Ya probé var , let , const y window. , pero no hacen ninguna diferencia. También intenté convertir el primer script en un módulo, pero luego no pude acceder a variable1 y (creo) no hay forma de usar importar/exportar.
notas: solo quiero separar los scripts en archivos separados si no hay otra opción.
Dado variable1 y variable2 están definidas en el mismo ámbito (en el nivel superior), no hay forma de acceder solo a una pero no a la otra en otro lugar, a menos que haya cambiado la primera etiqueta de secuencia de comandos a algo como
<script> var variable1 = 'first variable :)'; (() => { var variable2 = 'second variable :)'; // do stuff with variable2 })(); // variable2 cannot be seen outside </script>solo quiero separar los scripts en archivos separados si no hay otra opción
Es una muy buena opción que deberías considerar si estás haciendo algo razonablemente profesional y el código a escribir no es trivial. Lo recomiendo mucho, hace que el proceso de escribir y mantener el código sea mucho, mucho más fácil. Sí, toma algún tiempo descubrirlo y acostumbrarse, pero vale la pena, en mi opinión.
También podría usar un script de módulo y almacenar variables usando el objeto de ventana:
<script type="module"> var variable1 = 'first variable :)'; // not accessible by others scripts window.variable2 = 'second variable :)'; // accessible by others scripts </script> <script> console.log(window.variable2) setTimeout(() => console.log(variable2), 10) </script>