OK, pessoal, aqui está o meu pequeno teste também. Como tive um problema semelhante, resolvi testar três situações:
- Um arquivo HTML, um arquivo JS externo ... funciona mesmo - as funções podem se comunicar por meio de uma var global?
- Dois arquivos HTML, um arquivo JS externo, um navegador e duas guias: eles interferem na var global?
- Um arquivo HTML, aberto por dois navegadores, funcionará e eles interferirão?
Todos os resultados foram os esperados.
- Funciona. As funções f1 () e f2 () se comunicam via var global (var está no arquivo JS externo, não no arquivo HTML).
- Eles não interferem. Aparentemente, cópias distintas do arquivo JS foram feitas para cada guia do navegador, cada página HTML.
- Tudo funciona de forma independente, conforme o esperado.
Em vez de navegar nos tutoriais, achei mais fácil testá-lo, por isso o fiz. Minha conclusão: sempre que você incluir um arquivo JS externo em sua página HTML, o conteúdo do JS externo será "copiado / colado" em sua página HTML antes que a página seja renderizada. Ou em sua página PHP, se quiser. Por favor, corrija-me se estiver errado aqui. Thanx.
Meus arquivos de exemplo são os seguintes:
JS EXTERNO:
var global = 0;
function f1()
{
alert('fired: f1');
global = 1;
alert('global changed to 1');
}
function f2()
{
alert('fired f2');
alert('value of global: '+global);
}
HTML 1:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script type="text/javascript" src="external.js"></script>
<title>External JS Globals - index.php</title>
</head>
<body>
<button type="button" id="button1" onclick="f1();"> fire f1 </button>
<br />
<button type="button" id="button2" onclick="f2();"> fire f2 </button>
<br />
</body>
</html>
HTML 2
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script type="text/javascript" src="external.js"></script>
<title>External JS Globals - index2.php</title>
</head>
<body>
<button type="button" id="button1" onclick="f1();"> fire f1 </button>
<br />
<button type="button" id="button2" onclick="f2();"> fire f2 </button>
<br />
</body>
</html>
<script>
bloco de tags. Eu apenas tentei duas abordagens diferentes (sem declarar a var antes do arquivo helpers.js) e ambas funcionaram. Vou postar uma resposta, mas parece que algumas informações importantes estão faltando na sua pergunta.