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) |