65 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			65 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								title: Global Variables
							 | 
						|||
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Global variables are declared outside of a function for accessibility throughout the program, while local variables are stored within a function using `var` for use only within that function's [scope](https://developer.mozilla.org/en-US/docs/Glossary/Scope). If you declare a variable without using `var`, even if it's inside a function, it will still be seen as 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);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								A global variable is also an object of the current scope, such as the browser window:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```javascript
							 | 
						|||
| 
								 | 
							
								var dog = “Fluffy”;
							 | 
						|||
| 
								 | 
							
								console.log(dog); //Fluffy;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								var dog = “Fluffy”;
							 | 
						|||
| 
								 | 
							
								console.log(window.dog); //Fluffy
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								It’s a best practice to minimize global variables. Since the variable can be accessed anywhere in the program, they can cause strange behavior.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								References:
							 | 
						|||
| 
								 | 
							
								* [var -Javascript|MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var)
							 | 
						|||
| 
								 | 
							
								* [You Don't Know JavaScript: Scopes & Closures](https://github.com/getify/You-Dont-Know-JS/tree/master/scope%20%26%20closures)
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Additional Info:
							 | 
						|||
| 
								 | 
							
								* <a href='http://www.w3.org/wiki/JavaScript_best_practices#Avoid_globals' target='_blank' rel='nofollow'>JavaScript Best Practices: Avoid Globals</a>
							 | 
						|||
| 
								 | 
							
								* [What's the difference between a global var and a window.variable in javascript?](https://stackoverflow.com/questions/6349232/whats-the-difference-between-a-global-var-and-a-window-variable-in-javascript)
							 | 
						|||
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								The scope of JavaScript variables are either global or local.
							 | 
						|||
| 
								 | 
							
								Global variables are declared OUTSIDE the function and its value is accessible/changeable throughout the program.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								You should ALWAYS use **var** to declare your variables (to make locally) else it will install GLOBALLY
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Take care with the global variables because they are risky. Most of the time you should use closures to declare your variables.
							 | 
						|||
| 
								 | 
							
								Example:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```javascript
							 | 
						|||
| 
								 | 
							
								    (function(){
							 | 
						|||
| 
								 | 
							
								      var myVar = true;
							 | 
						|||
| 
								 | 
							
								    })();
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### More Information:
							 | 
						|||
| 
								 | 
							
								- [JavaScript Best Practices: Avoid Globals](http://www.w3.org/wiki/JavaScript_best_practices#Avoid_globals)
							 | 
						|||
| 
								 | 
							
								- [Global Variables are bad](http://c2.com/cgi/wiki?GlobalVariablesAreBad)
							 | 
						|||
| 
								 | 
							
								- [MDN - Global Variables](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var)
							 |