Preciso de algumas variáveis globais que preciso em todos os .js
arquivos.
Por exemplo, considere os seguintes 4 arquivos:
global.js
js1.js
js2.js
js3.js
Existe uma maneira de declarar 3 variáveis globais global.js
e acessá-las em qualquer um dos outros 3 .js
arquivos, considerando que carrego todos os 4 arquivos acima em um documento HTML?
Alguém pode me dizer se isso é possível ou existe uma solução alternativa para conseguir isso?
A abordagem recomendada é:
Você pode acessá-lo em qualquer função:
Essa abordagem é preferida por dois motivos.
A intenção é explícita. O uso da
var
palavra - chave pode facilmente levar à declaração de globaisvars
que deveriam ser locais ou vice-versa. Esse tipo de escopo de variável é um ponto de confusão para muitos desenvolvedores de Javascript. Portanto, como regra geral, asseguro-me de que todas as declarações de variáveis sejam precedidas da palavra-chavevar
ou do prefixowindow
.Você padroniza esta sintaxe para ler as variáveis dessa maneira também, o que significa que um escopo local
var
não supera o globalvar
ou vice-versa. Por exemplo, o que acontece aqui é ambíguo:No entanto, isso é muito mais limpo e menos sujeito a erros (você realmente não precisa se lembrar de todas as regras de escopo de variáveis):
fonte
Tentaste?
Se você fizer:
Em
global.js
. E então faça:No
js1.js
ele irá alertá-lo bem. Você apenas tem que incluirglobal.js
antes do resto no documento HTML.O único problema é que você deve declará-lo no escopo da janela (não dentro de nenhuma função).
Você poderia simplesmente anular a
var
peça e criá-la dessa forma, mas não é uma boa prática.fonte
Conforme mencionado acima, há problemas com o uso do escopo superior em seu arquivo de script. Aqui está outro problema: O arquivo de script pode ser executado a partir de um contexto que não é o contexto global em algum ambiente de tempo de execução.
Foi proposto atribuir o global
window
diretamente. Mas isso também depende do tempo de execução e não funciona no Node etc. Isso mostra que o gerenciamento de variável global portátil precisa de alguma consideração cuidadosa e esforço extra. Talvez eles consertem em futuras versões do ECMS!Por enquanto, eu recomendaria algo assim para oferecer suporte ao gerenciamento global adequado para todos os ambientes de tempo de execução:
É um pouco mais de digitação, mas torna o gerenciamento de variável global à prova de futuro.
Aviso de isenção de responsabilidade: Parte dessa ideia me ocorreu ao examinar as versões anteriores do stacktrace.js .
Acho que também se pode usar o Webpack ou outras ferramentas para obter uma detecção mais confiável e menos invasiva do ambiente de tempo de execução.
fonte
GLOBAL
agora está obsoleto eglobal
deve ser usado em seu lugar.Sim, você pode acessá-los. Você deve declará-los em 'espaço público' (fora de quaisquer funções) como:
Você pode acessá-los mais tarde, também em outros arquivos.
fonte