67 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			67 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | |||
|  | title: Global Variables | |||
|  | localeTitle: Глобальные переменные | |||
|  | --- | |||
|  | Глобальные переменные объявляются вне функции для доступности всей программы, в то время как локальные переменные хранятся в функции , используя `var` для использования только в пределах этой функции в [объеме](https://developer.mozilla.org/en-US/docs/Glossary/Scope) . Если вы объявите переменную без использования `var` , даже если она находится внутри функции, она будет по-прежнему рассматриваться как глобальная: | |||
|  | 
 | |||
|  | ```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);  | |||
|  |  }  | |||
|  | ``` | |||
|  | 
 | |||
|  | Глобальная переменная также является объектом текущей области, такой как окно браузера: | |||
|  | 
 | |||
|  | ```javascript | |||
|  | var dog = “Fluffy”;  | |||
|  |  console.log(dog); //Fluffy;  | |||
|  |   | |||
|  |  var dog = “Fluffy”;  | |||
|  |  console.log(window.dog); //Fluffy  | |||
|  | ``` | |||
|  | 
 | |||
|  | Рекомендуется минимизировать глобальные переменные. Поскольку переменную можно получить в любом месте программы, они могут вызвать странное поведение. | |||
|  | 
 | |||
|  | Рекомендации: | |||
|  | 
 | |||
|  | *   [var -Javascript | MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var) | |||
|  | *   [Вы не знаете JavaScript: области и закрытие](https://github.com/getify/You-Dont-Know-JS/tree/master/scope%20%26%20closures) | |||
|  | 
 | |||
|  | Дополнительная информация: | |||
|  | 
 | |||
|  | *   [Рекомендации по использованию JavaScript: избегайте глобальных](http://www.w3.org/wiki/JavaScript_best_practices#Avoid_globals) | |||
|  | 
 | |||
|  | ## \* В [чем разница между глобальным var и window.variable в javascript?](https://stackoverflow.com/questions/6349232/whats-the-difference-between-a-global-var-and-a-window-variable-in-javascript)
 | |||
|  | 
 | |||
|  | Объем переменных JavaScript является глобальным или локальным. Глобальные переменные объявляются НАРУЖНОЙ функцией, и ее значение доступно / изменено в течение всей программы. | |||
|  | 
 | |||
|  | Вы должны ВСЕГДА использовать **var,** чтобы объявить свои переменные (сделать локально), иначе он установит GLOBALY | |||
|  | 
 | |||
|  | Будьте осторожны с глобальными переменными, потому что они рискованны. Большую часть времени вы должны использовать закрытие для объявления переменных. Пример: | |||
|  | 
 | |||
|  | ```javascript | |||
|  |     (function(){  | |||
|  |       var myVar = true;  | |||
|  |     })();  | |||
|  | ``` | |||
|  | 
 | |||
|  | #### Дополнительная информация:
 | |||
|  | 
 | |||
|  | *   [Рекомендации по использованию JavaScript: избегайте глобальных](http://www.w3.org/wiki/JavaScript_best_practices#Avoid_globals) | |||
|  | *   [Глобальные переменные плохи](http://c2.com/cgi/wiki?GlobalVariablesAreBad) | |||
|  | *   [MDN - глобальные переменные](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var) |