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