67 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			67 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | |||
|  | title: Global Variables | |||
|  | localeTitle: Variáveis globais | |||
|  | --- | |||
|  | Variáveis globais são declaradas fora de uma função para acessibilidade em todo o programa, enquanto variáveis locais são armazenadas dentro de uma função usando `var` para uso somente dentro do [escopo](https://developer.mozilla.org/en-US/docs/Glossary/Scope) dessa função. Se você declarar uma variável sem usar `var` , mesmo que esteja dentro de uma função, ela ainda será vista como global: | |||
|  | 
 | |||
|  | ```javascript | |||
|  | var x = 5; //global  | |||
|  |  function someThing(y) {  | |||
|  |  var z = x + y;  | |||
|  |  console.log(z);  | |||
|  |  }  | |||
|  |   | |||
|  |  function someThing(y) {  | |||
|  |  x = 5; //still global!  | |||
|  |  var z = x + y;  | |||
|  |  console.log(z);  | |||
|  |  }  | |||
|  |   | |||
|  |   | |||
|  |  function someThing(y) {  | |||
|  |  var x = 5; //local  | |||
|  |  var z = x + y;  | |||
|  |  console.log(z);  | |||
|  |  }  | |||
|  | ``` | |||
|  | 
 | |||
|  | Uma variável global também é um objeto do escopo atual, como a janela do navegador: | |||
|  | 
 | |||
|  | ```javascript | |||
|  | var dog = “Fluffy”;  | |||
|  |  console.log(dog); //Fluffy;  | |||
|  |   | |||
|  |  var dog = “Fluffy”;  | |||
|  |  console.log(window.dog); //Fluffy  | |||
|  | ``` | |||
|  | 
 | |||
|  | É uma prática recomendada minimizar as variáveis globais. Como a variável pode ser acessada em qualquer lugar do programa, elas podem causar um comportamento estranho. | |||
|  | 
 | |||
|  | Referências: | |||
|  | 
 | |||
|  | *   [var -Javascript | MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var) | |||
|  | *   [Você não sabe JavaScript: escopos e fechamentos](https://github.com/getify/You-Dont-Know-JS/tree/master/scope%20%26%20closures) | |||
|  | 
 | |||
|  | Informação adicional: | |||
|  | 
 | |||
|  | *   [Melhores Práticas JavaScript: Evite Globals](http://www.w3.org/wiki/JavaScript_best_practices#Avoid_globals) | |||
|  | 
 | |||
|  | ## \* [Qual é a diferença entre um var global e uma janela.variável em javascript?](https://stackoverflow.com/questions/6349232/whats-the-difference-between-a-global-var-and-a-window-variable-in-javascript)
 | |||
|  | 
 | |||
|  | O escopo das variáveis JavaScript é global ou local. As variáveis globais são declaradas FORA da função e seu valor é acessível / modificável em todo o programa. | |||
|  | 
 | |||
|  | Você deve sempre usar **var** para declarar suas variáveis (para fazer localmente) senão ele irá instalar GLOBALLY | |||
|  | 
 | |||
|  | Tome cuidado com as variáveis globais porque elas são arriscadas. Na maioria das vezes você deve usar encerramentos para declarar suas variáveis. Exemplo: | |||
|  | 
 | |||
|  | ```javascript | |||
|  |     (function(){  | |||
|  |       var myVar = true;  | |||
|  |     })();  | |||
|  | ``` | |||
|  | 
 | |||
|  | #### Mais Informações:
 | |||
|  | 
 | |||
|  | *   [Melhores Práticas JavaScript: Evite Globals](http://www.w3.org/wiki/JavaScript_best_practices#Avoid_globals) | |||
|  | *   [Variáveis globais são ruins](http://c2.com/cgi/wiki?GlobalVariablesAreBad) | |||
|  | *   [MDN - Variáveis Globais](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var) |